Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via PATCH /v5/campaigns/{campaign_id}.
For the order in which MoEngage resolves a placeholder across content blocks, trigger-request attributes, and user profile attributes, see Content for API-triggered shells.
For the full schema of trigger_condition, segmentation_details, scheduling_details, delivery_controls, conversion_goal_details, control_group_details, utm_params, campaign_audience_limit, advanced, and geofences, see Audience and delivery reference.
Rate Limits
Rate Limit Name
Rate Limit
Create campaign per minute
The total number of create campaign operations per minute per client allowed is 5.
Create campaign per hour
The total number of create campaign operations per hour per client allowed is 25.
Create campaign per day
The total number of create campaign operations per day per client allowed is 100.
Campaign Creation Limits
You can create 5 campaigns per minute, 25 campaigns per hour, and 100 campaigns per day.
Notes
Higher limit (Total Calls): The system permits a higher volume of total API calls (for example, 120 calls) to accommodate potential failures or retries.
Minimum limit (Campaign Creation Limits): The system maintains a stricter quota for actual successful creations (100 campaigns per day).
Example: If a client submits 120 requests and 20 fail, they successfully generate exactly 100 campaigns.
Because the system applies the most restrictive threshold, the 100 successful operations trigger the quota limit, and the system issues a rate limit breach warning regardless of the total API calls made.
Breaching the limits will reject the request.
Per-hour and per-day limits use a rolling window of the last 1 hour and last 24 hours respectively.
Authorizations
Authorization
string
header
required
Authentication is done via Basic Auth. This requires a base64-encoded string of your credentials in the format username:password.
Username: Use your MoEngage Workspace ID (also known as the App ID). Find it in the MoEngage dashboard at Settings > Account > API keys.
Password: Use an API key from Settings > Account > API keys.
Refer to API Key Dashboard for details on creating and managing API keys.
Headers
MOE-APPKEY
string
Your MoEngage Workspace ID (App ID). Optional — Basic Auth already carries the Workspace ID as the username, so this header is not required. Find it in the dashboard at Settings > Account > API keys.
X-MOE-Request-Id
string
Client-supplied trace ID. The server echoes it in the X-MOE-Request-Id response header and in response_id. If you omit it, the server generates one.
Idempotency-Key
string<uuid>
required
UUID v4. Required on all POST and PATCH requests except POST /v5/campaigns/{campaign_id}/validate. Repeating the same key returns the same response body.
Body
application/json
Campaign payload. Required top-level fields are channel, campaign_delivery_type, and created_by. Optional sections (basic_details, campaign_content, audience, scheduling, and so on) can be omitted or supplied in full.
Note: Use the tabs below to select your campaign type. The schema adapts based on the selected channel.
Push Campaign
Email Campaign
Request body for creating a Push campaign draft via POST /v5/campaigns.
Only channel, campaign_delivery_type, and created_by are required. Optional components (basic_details, campaign_content, segmentation_details, and so on) can be included in the same request, or added later via PATCH /v5/campaigns/{campaign_id}.
For full examples per delivery type, refer to campaign_delivery_type below. For the component-level schemas with conditional rules per template type, platform, and delivery type, refer to:
A unique identifier for this campaign creation request.
Important: After successful campaign creation, do not reuse this request_id for the next 1 hour. If campaign creation fails, you can immediately retry with the same request_id.
Example:
"{{request_id}}"
basic_details
object
Identifying metadata for the Push campaign, including name, team, tags, and platform targeting.
For field-by-field rules, conditional requirements, and platform-specific delivery flags (Android push_amp_plus_enabled, iOS provisional-push audience flags), refer to Push campaign metadata.
Show child attributes
trigger_condition
object
Trigger condition details for Push event-triggered, device-triggered, and related campaigns.
Required for EVENT_TRIGGERED, DEVICE_TRIGGERED, and LOCATION_TRIGGERED Push campaigns.
For per-delay-type runnable payloads (ASAP, DELAY with AFTER/BEFORE, INTELLIGENT_DELAY), filter primitives, and primary/secondary filter combinations, refer to Trigger conditions.
Show child attributes
campaign_content
object
Push message content, locales, and A/B variations.
For full POST /v5/campaigns request examples that include campaign_content, refer to campaign_delivery_type on PushCampaignCreateV5Request, VariationDetails, and the Create Campaign Draft code samples.
For included/excluded filter combinations, filter primitives (user_attributes, actions, custom_segments), and opt-out targeting, refer to Campaign audience.
Show child attributes
scheduling_details
object
Defines when the campaign should be sent.
For per-delivery-type runnable payloads (ASAP, AT_FIXED_TIME, SEND_IN_BTS, SEND_IN_USER_TIMEZONE, and PERIODIC with periodic_details), refer to Campaign delivery schedule.
Show child attributes
delivery_controls
object
Controls for Push campaign delivery behavior.
For per-delivery-type runnable examples (throttle, event-triggered, device-triggered, location-triggered, queuing), refer to Push delivery controls.
Show child attributes
advanced
object
Advanced Push delivery settings, including notification expiration and per-platform priority.
For runnable iOS APNS priority and Android priority examples, refer to Advanced Push settings.
Show child attributes
conversion_goal_details
object
Configuration for tracking campaign conversion goals.
For runnable campaign-control-group and global-control-group examples, refer to Control groups.
Show child attributes
utm_params
object
UTM parameters for tracking campaign performance. The five standard keys (utm_source, utm_medium, utm_campaign, utm_term, utm_content) are explicitly defined.
Custom UTM parameters: Up to 5 additional custom parameters can be passed as separate keys directly inside the utm_params object. Custom keys accept arbitrary names — the utm_ prefix is a convention, not a requirement (for example, utm_cust or campaign_source are both accepted).
Configuration for capping the number of users a campaign can reach (max-send).
Campaign Audience Limit (also called max-send) caps how many users a single campaign can reach. Use it to control reach on high-volume campaigns and protect users from over-messaging. The cap can apply across the campaign's full lifetime (frequency: TOTAL) or per send instance (frequency: INSTANCE).
For runnable TOTAL (lifetime cap), INSTANCE (per-send cap, Periodic Push only), and disabled-cap examples, refer to Campaign audience cap.
Supported channels: Email, Push.
Supported delivery types:
All delivery types support frequency: TOTAL (lifetime cap).
frequency: INSTANCE (per-send cap) is supported only for Periodic Push campaigns.
campaign_audience_limit is not supported for BROADCAST_LIVE_ACTIVITY.
Flag-gated feature: This feature is not enabled by default for any workspace and requires
explicit activation by your MoEngage account team. If you include campaign_audience_limit in
a request on a workspace where the flag has not been enabled, the API returns a 400 with the
following error body:
{ "error": { "code": "VALIDATION_FAILED", "message": "Campaign Audience Limit feature is not enabled for this db", "target": "campaign_audience_limit", "details": [ { "target": "campaign_audience_limit", "message": "Campaign Audience Limit feature is not enabled for this db" } ] }, "response_id": "{{response_id}}" }
When is_campaign_audience_limit_enabled is true, the fields metric, frequency, and
limit are all required. When set to false, those three fields must not be provided.
For ONE_TIME campaigns, only limit and is_campaign_audience_limit_enabled are supported. Do not pass metric or frequency, they are only valid for PERIODIC and EVENT_TRIGGERED campaigns.
Passing them for a ONE_TIME campaign causes the validate API to fail.
Show child attributes
Response
Draft created
response_id
string
type
string
Example:
"campaign"
data
object
Payload returned when a draft is successfully created.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MoEngage","colors":{"primary":"#2E69FF","light":"#6691FF","dark":"#2554CC"},"logo":{"light":"https://mintcdn.com/moengage/VG5pJbeZsDUmdCZM/logo/light.svg?fit=max\u0026auto=format\u0026n=VG5pJbeZsDUmdCZM\u0026q=85\u0026s=28ca5909311cb6ffe01738e1503b5e64","dark":"https://mintcdn.com/moengage/VG5pJbeZsDUmdCZM/logo/dark.svg?fit=max\u0026auto=format\u0026n=VG5pJbeZsDUmdCZM\u0026q=85\u0026s=728a767d8fb8d3434575a28de18d08c5","href":"https://www.moengage.com/docs/"},"favicon":"https://mintcdn.com/moengage/bJi_ZHRHKldZCdcW/logo/favicon.svg?fit=max\u0026auto=format\u0026n=bJi_ZHRHKldZCdcW\u0026q=85\u0026s=9d13744d3b616913967983f324947bb5","api":{"examples":{"languages":["curl"]}},"appearance":{"default":"system"},"background":{"decoration":"gradient","color":{"light":"#FFFFFF","dark":"#121212"}},"navbar":{"links":[{"href":"/user-guide/contact-support/raise-a-support-ticket-through-moengage-dashboard","label":"Support"},{"href":"https://www.moengage.com/request-demo","label":"Request Demo"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.moengage.com/"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/moengage","x":"https://x.com/i/flow/login?redirect_after_login=%2Fmoengage","youtube":"https://www.youtube.com/c/MoEngage_Global","facebook":"https://www.facebook.com/moengage","github":"https://github.com/moengage"},"links":[{"header":"Support","items":[{"label":"Contact Support","href":"https://www.moengage.com/docs/user-guide/contact-support/raise-a-support-ticket-through-moengage-dashboard"},{"label":"AIRA Support Bot","href":"https://www.moengage.com/docs/user-guide/contact-support/aira-support-bot/aira-overview"},{"label":"Suggest a Feature","href":"https://www.moengage.com/docs/user-guide/contact-support/suggest-a-feature"},{"label":"System Status","href":"https://status.moengage.com"}]},{"header":"Learn","items":[{"label":"MoEngage Academy","href":"https://academy.moengage.com/student/catalog"},{"label":"Use Cases","href":"https://www.moengage.com/docs/use-cases/introduction"},{"label":"Release Notes","href":"https://www.moengage.com/docs/release-notes/subscribe-to-release-notes"},{"label":"Blog","href":"https://www.moengage.com/blog"}]},{"header":"For AI Tools","items":[{"label":"Setup Guide","href":"https://www.moengage.com/docs/documentation-access-to-agents"},{"label":"llms.txt","href":"https://www.moengage.com/docs/llms.txt"},{"label":"llms-full.txt","href":"https://www.moengage.com/docs/llms-full.txt"}]}]},"seo":{"metatags":{"google-site-verification":"ICNaPDX9oefbF09W1b5_U9PDnlkyfyKSRbIap6_dW6o"},"indexing":"all"},"fonts":{"heading":{"family":"circular","source":"https://app-cdn.moengage.com/images/Fonts/CircularXXWeb-Regular.woff2","format":"woff2"},"body":{"family":"circular","source":"https://app-cdn.moengage.com/images/Fonts/CircularXXWeb-Regular.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode"],"display":"header"},"interaction":{"drilldown":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"ja","href":"ja"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moengage","hasAudioNarration":false,"actualSubdomain":"moengage","customDomains":["moengage.com"],"gitSource":{"type":"github","owner":"moengage","repo":"moengage-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"contextualFeedback":{"allowEmail":true},"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af724dbb04360f969d7dd26","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"en","tag":"Guide","count":1187},{"language":"ja","tag":"ガイド","count":1180},{"language":"en","tag":"User Guide","count":798},{"language":"ja","tag":"ユーザーガイド","count":798},{"language":"en","tag":"Campaigns and Channels","count":437},{"language":"ja","tag":"キャンペーンとチャネル","count":437},{"language":"en","tag":"Partner Integrations","count":390},{"language":"ja","tag":"パートナー統合","count":383},{"language":"en","tag":"SDKs","count":341},{"language":"en","tag":"Developer Guide (SDKs)","count":330},{"language":"ja","tag":"SDK","count":308},{"language":"ja","tag":"開発者ガイド(SDK)","count":297},{"language":"en","tag":"Use Cases","count":218},{"language":"ja","tag":"ユースケース","count":218},{"language":"en","tag":"API Guide","count":185},{"language":"ja","tag":"APIガイド","count":183},{"language":"en","tag":"Endpoints","count":179},{"language":"ja","tag":"エンドポイント","count":177},{"language":"en","tag":"Release Notes","count":140},{"language":"ja","tag":"リリースノート","count":136}],"searchSettings":{"maxResults":8,"isFiltersEnabled":true}},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":false,"type":"email"}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"69a03c84f0b21f38ae93fdfb","deploymentId":"68bea8f8fe02728a34cf2acf","questionText":"How do I track user events?","status":"active","generatedBy":"manual","createdAt":"2026-02-26T12:28:52.454Z","updatedAt":"2026-02-26T12:28:52.454Z","__v":0}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","href":"/docs/_mintlify/custom/moengage/0a209f0cf9e21c6c/style.css"}],"page":{"pagePath":"api/create-campaigns/create-campaign-draft-v5","slug":"/api/create-campaigns/create-campaign-draft-v5","pageMetadata":{"title":"Create Campaign Draft (V5)","description":"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via `PATCH /v5/campaigns/{campaign_id}`.\n","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns","href":"/api/create-campaigns/create-campaign-draft-v5","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via \", _jsx(_components.code, {\n children: \"PATCH /v5/campaigns/{campaign_id}\"\n }), \".\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Info,Note,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(Info,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Component reference pages:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For the full schema of `,_jsx(_components.code,{children:`basic_details`}),` and `,_jsx(_components.code,{children:`campaign_content`}),` per channel, platform, and template type :`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Android (`,_jsx(_components.code,{children:`BASIC`}),` / `,_jsx(_components.code,{children:`STYLIZED_BASIC`}),` / `,_jsx(_components.code,{children:`SIMPLE_IMAGE_CAROUSEL`}),` / `,_jsx(_components.code,{children:`IMAGE_BANNER_WITH_TEXT`}),` / `,_jsx(_components.code,{children:`TIMER`}),` / `,_jsx(_components.code,{children:`TIMER_WITH_PROGRESS_BAR`}),` / `,_jsx(_components.code,{children:`Custom`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`iOS (`,_jsx(_components.code,{children:`BASIC`}),` / `,_jsx(_components.code,{children:`STYLIZED_BASIC`}),` / `,_jsx(_components.code,{children:`SIMPLE_IMAGE_CAROUSEL`}),` / `,_jsx(_components.code,{children:`Custom`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Web `,_jsx(_components.code,{children:`BASIC`})]}),`\n`,_jsxs(_components.li,{children:[`Email (`,_jsx(_components.code,{children:`html_content`}),` and `,_jsx(_components.code,{children:`custom_template_id`}),`), see `,_jsx(_components.a,{href:`/api/campaigns/campaign-content-reference`,children:`Campaign content reference`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`For the order in which MoEngage resolves a placeholder across content blocks, trigger-request attributes, and user profile attributes, see `,_jsx(_components.a,{href:`/api/campaigns/campaign-content-reference#content-for-api-triggered-shells`,children:`Content for API-triggered shells`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`For the full schema of `,_jsx(_components.code,{children:`trigger_condition`}),`, `,_jsx(_components.code,{children:`segmentation_details`}),`, `,_jsx(_components.code,{children:`scheduling_details`}),`, `,_jsx(_components.code,{children:`delivery_controls`}),`, `,_jsx(_components.code,{children:`conversion_goal_details`}),`, `,_jsx(_components.code,{children:`control_group_details`}),`, `,_jsx(_components.code,{children:`utm_params`}),`, `,_jsx(_components.code,{children:`campaign_audience_limit`}),`, `,_jsx(_components.code,{children:`advanced`}),`, and `,_jsx(_components.code,{children:`geofences`}),`, see `,_jsx(_components.a,{href:`/api/campaigns/audience-scheduling-delivery-reference`,children:`Audience and delivery reference`}),`.`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`4`,id:`rate-limits`,children:`Rate Limits`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Rate Limit Name`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Rate Limit`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Create campaign per minute`}),_jsx(_components.td,{style:{textAlign:`left`},children:`The total number of create campaign operations per minute per client allowed is 5.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Create campaign per hour`}),_jsx(_components.td,{style:{textAlign:`left`},children:`The total number of create campaign operations per hour per client allowed is 25.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Create campaign per day`}),_jsx(_components.td,{style:{textAlign:`left`},children:`The total number of create campaign operations per day per client allowed is 100.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`campaign-creation-limits`,children:`Campaign Creation Limits`}),`\n`,_jsx(_components.p,{children:`You can create 5 campaigns per minute, 25 campaigns per hour, and 100 campaigns per day.`}),`\n`,_jsxs(Note,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Notes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Higher limit (Total Calls): The system permits a higher volume of total API calls (for example, 120 calls) to accommodate potential failures or retries.`}),`\n`,_jsx(_components.li,{children:`Minimum limit (Campaign Creation Limits): The system maintains a stricter quota for actual successful creations (100 campaigns per day).`}),`\n`]}),_jsx(_components.p,{children:`Example: If a client submits 120 requests and 20 fail, they successfully generate exactly 100 campaigns.\nBecause the system applies the most restrictive threshold, the 100 successful operations trigger the quota limit, and the system issues a rate limit breach warning regardless of the total API calls made.`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Breaching the limits will reject the request.`}),`\n`,_jsx(_components.li,{children:`Per-hour and per-day limits use a rolling window of the last 1 hour and last 24 hours respectively.`}),`\n`]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create Campaign Draft (V5)","description":"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via `PATCH /v5/campaigns/{campaign_id}`.\n","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns","href":"/api/create-campaigns/create-campaign-draft-v5","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Rate Limits","slug":"rate-limits","depth":4,"children":[]},{"title":"Campaign Creation Limits","slug":"campaign-creation-limits","depth":3,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/moengage/992523b3cb2256cd/script.js"],"openApiReferenceData":{"operation":{"operationId":"create_draft_campaign_v5","summary":"Create Campaign Draft (V5)","description":"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via `PATCH /v5/campaigns/{campaign_id}`.\n","x-mint":{"content":"\n\u003cInfo>\n**Component reference pages:**\n- For the full schema of `basic_details` and `campaign_content` per channel, platform, and template type :\n - Android (`BASIC` / `STYLIZED_BASIC` / `SIMPLE_IMAGE_CAROUSEL` / `IMAGE_BANNER_WITH_TEXT` / `TIMER` / `TIMER_WITH_PROGRESS_BAR` / `Custom`)\n - iOS (`BASIC` / `STYLIZED_BASIC` / `SIMPLE_IMAGE_CAROUSEL` / `Custom`)\n - Web `BASIC`\n - Email (`html_content` and `custom_template_id`), see [Campaign content reference](/api/campaigns/campaign-content-reference).\n- For the order in which MoEngage resolves a placeholder across content blocks, trigger-request attributes, and user profile attributes, see [Content for API-triggered shells](/api/campaigns/campaign-content-reference#content-for-api-triggered-shells).\n- For the full schema of `trigger_condition`, `segmentation_details`, `scheduling_details`, `delivery_controls`, `conversion_goal_details`, `control_group_details`, `utm_params`, `campaign_audience_limit`, `advanced`, and `geofences`, see [Audience and delivery reference](/api/campaigns/audience-scheduling-delivery-reference).\n\u003c/Info>\n\n#### Rate Limits\n| Rate Limit Name | Rate Limit |\n| :--- | :--- |\n| Create campaign per minute | The total number of create campaign operations per minute per client allowed is 5. |\n| Create campaign per hour | The total number of create campaign operations per hour per client allowed is 25. |\n| Create campaign per day | The total number of create campaign operations per day per client allowed is 100. |\n\n### Campaign Creation Limits\n\nYou can create 5 campaigns per minute, 25 campaigns per hour, and 100 campaigns per day.\n\n\u003cNote>\n**Notes**\n* Higher limit (Total Calls): The system permits a higher volume of total API calls (for example, 120 calls) to accommodate potential failures or retries.\n* Minimum limit (Campaign Creation Limits): The system maintains a stricter quota for actual successful creations (100 campaigns per day).\n\nExample: If a client submits 120 requests and 20 fail, they successfully generate exactly 100 campaigns.\nBecause the system applies the most restrictive threshold, the 100 successful operations trigger the quota limit, and the system issues a rate limit breach warning regardless of the total API calls made.\n* Breaching the limits will reject the request.\n* Per-hour and per-day limits use a rolling window of the last 1 hour and last 24 hours respectively.\n\u003c/Note>\n"},"tags":["Create Campaigns"],"parameters":["7287b0a6-4190-434b-9add-79260fd729c3","0d6499fb-2541-4798-80ac-ff1a70f912f7","efec8f4e-cdd4-4530-ae3b-6832240fdbe6"],"requestBody":"060ee223-0f50-4a8d-a7d5-b5b6d5cbdd5f","responses":{"201":"1164eaf1-ef8f-45a0-af63-b6f5b8b10f4b","400":"4f31be60-f21c-4cbf-b720-a20c9bc739f1","401":"4717a078-5fd4-412d-9ff7-d5a79fdda388","429":"37750498-b661-42e3-9e66-6470fddeb62e","500":"b1ad9ee8-1615-450b-840f-288b43d1e0f5"},"method":"post","type":"path","servers":["c798160a-ec8a-4114-8b25-ca19c258b222"],"security":["f45eafa4-aacf-46b1-ba0d-7a481982e829"],"path":"/v5/campaigns","baseUrlOptions":["https://api-{dc}.moengage.com"],"title":"Create Campaign Draft (V5)","codeSamples":[],"requestExampleLanguages":["bash"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"7287b0a6-4190-434b-9add-79260fd729c3":{"name":"MOE-APPKEY","in":"header","required":false,"description":"Your MoEngage Workspace ID (App ID). Optional — Basic Auth already carries the Workspace ID as the username, so this header is not required. Find it in the dashboard at **Settings** > **Account** > **API keys**.\n","schema":{"type":"string","isRequired":false,"description":"Your MoEngage Workspace ID (App ID). Optional — Basic Auth already carries the Workspace ID as the username, so this header is not required. Find it in the dashboard at **Settings** > **Account** > **API keys**.\n","uniqueKey":"","typeLabel":"string"},"example":"{{workspace_id}}"},"0d6499fb-2541-4798-80ac-ff1a70f912f7":{"name":"X-MOE-Request-Id","in":"header","required":false,"description":"Client-supplied trace ID. The server echoes it in the `X-MOE-Request-Id` response header and in `response_id`. If you omit it, the server generates one.\n","schema":{"type":"string","isRequired":false,"description":"Client-supplied trace ID. The server echoes it in the `X-MOE-Request-Id` response header and in `response_id`. If you omit it, the server generates one.\n","uniqueKey":"","typeLabel":"string"}},"efec8f4e-cdd4-4530-ae3b-6832240fdbe6":{"name":"Idempotency-Key","in":"header","required":true,"description":"UUID v4. Required on all `POST` and `PATCH` requests except `POST /v5/campaigns/{campaign_id}/validate`. Repeating the same key returns the same response body.\n","schema":{"type":"string","format":"uuid","isRequired":true,"description":"UUID v4. Required on all `POST` and `PATCH` requests except `POST /v5/campaigns/{campaign_id}/validate`. Repeating the same key returns the same response body.\n","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"description":"Campaign payload. Required top-level fields are `channel`, `campaign_delivery_type`, and `created_by`. Optional sections (`basic_details`, `campaign_content`, audience, scheduling, and so on) can be omitted or supplied in full.\n**Note:** Use the tabs below to select your campaign type. The schema adapts based on the selected channel.","required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Push Campaign","description":"Request body for creating a Push campaign draft via `POST /v5/campaigns`.\n\nOnly `channel`, `campaign_delivery_type`, and `created_by` are required. Optional components (`basic_details`, `campaign_content`, `segmentation_details`, and so on) can be included in the same request, or added later via `PATCH /v5/campaigns/{campaign_id}`.\n\n\nFor full examples per delivery type, refer to `campaign_delivery_type` below. For the component-level schemas with conditional rules per template type, platform, and delivery type, refer to:\n- [Campaign content reference](/api/campaigns/campaign-content-reference) — `basic_details` and `campaign_content`.\n- [Audience and delivery reference](/api/campaigns/audience-scheduling-delivery-reference) — `trigger_condition`, `segmentation_details`, `scheduling_details`, `delivery_controls`, `conversion_goal_details`, `control_group_details`, `utm_params`, `campaign_audience_limit`, `advanced`, and `geofences`.\n","required":["channel","campaign_delivery_type","created_by"],"properties":{"channel":{"type":"string","enum":["PUSH"],"description":"The campaign channel. One of `PUSH` or `EMAIL`.","isRequired":true,"uniqueKey":"oneOf.0.channel","typeLabel":"enum\u003cstring>"},"campaign_delivery_type":{"type":"string","enum":["ONE_TIME","PERIODIC","EVENT_TRIGGERED","BUSINESS_EVENT_TRIGGERED","DEVICE_TRIGGERED","LOCATION_TRIGGERED"],"description":"The delivery type of the campaign.\n\n**Note:** `BROADCAST_LIVE_ACTIVITY` is not supported through the draft-based creation flow.\n\nFor full request payloads per delivery type, see the code examples on this page.\n","isRequired":true,"uniqueKey":"oneOf.0.campaign_delivery_type","typeLabel":"enum\u003cstring>"},"created_by":{"type":"string","format":"email","description":"The email ID of the user creating this campaign.","example":"[email protected]","isRequired":true,"uniqueKey":"oneOf.0.created_by","typeLabel":"string\u003cemail>"},"request_id":{"type":"string","description":"A unique identifier for this campaign creation request.\n\n**Important:** After successful campaign creation, do not reuse this request_id for the next 1 hour. If campaign creation fails, you can immediately retry with the same request_id.\n","example":"{{request_id}}","uniqueKey":"oneOf.0.request_id","typeLabel":"string"},"basic_details":{"type":"object","description":"Identifying metadata for the Push campaign, including name, team, tags, and platform targeting.\n\nFor field-by-field rules, conditional requirements, and platform-specific delivery flags (Android `push_amp_plus_enabled`, iOS provisional-push audience flags), refer to [Push campaign metadata](/api/campaigns/campaign-content-reference#push-campaign-metadata).\n","properties":{"name":{"type":"string","description":"The name of the campaign.","example":"Summer Sale Push Notification","uniqueKey":"oneOf.0.basic_details.name","typeLabel":"string"},"business_event":{"type":"string","description":"The business event to be mapped to the campaign.\n\n**Required** for BUSINESS_EVENT_TRIGGERED campaigns.\n","example":"user_signup","uniqueKey":"oneOf.0.basic_details.business_event","typeLabel":"string"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.basic_details.tags.items.[INDEX]","typeLabel":"string"},"description":"Tags that provide context about the campaign's nature or theme.","example":["activation","summer_sale"],"uniqueKey":"oneOf.0.basic_details.tags","typeLabel":"string[]"},"team":{"type":"string","description":"The name of the team collaborating on this campaign.\nFor more information, refer to [Teams in MoEngage](/user-guide/settings/account/team-management/teams-in-moengage).\n","example":"marketing_team","uniqueKey":"oneOf.0.basic_details.team","typeLabel":"string"},"platforms":{"type":"array","items":{"type":"string","enum":["ANDROID","IOS","WEB"],"uniqueKey":"oneOf.0.basic_details.platforms.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The platforms to target for this Push campaign.","example":["ANDROID","IOS"],"uniqueKey":"oneOf.0.basic_details.platforms","typeLabel":"enum\u003cstring>[]"},"broadcast_live_activity_id":{"type":"string","description":"The broadcast live activity ID for iOS Live Activities.\n\n**Required** when platform is iOS and delivery_type is BROADCAST_LIVE_ACTIVITY.\n\n**Not applicable in the draft-based creation flow.** `BROADCAST_LIVE_ACTIVITY` is not supported via POST `/v5/campaigns`.\n","example":"live_check123","uniqueKey":"oneOf.0.basic_details.broadcast_live_activity_id","typeLabel":"string"},"geofences":{"type":"object","description":"Geofence location details for location-triggered campaigns.\n\n**Required** for LOCATION_TRIGGERED campaigns.\n\nFor per-`triggered_at` runnable payloads (`ENTRY`, `EXIT`, `dwell`) and the casing distinction between `ENTRY`/`EXIT` (uppercase) and `dwell` (lowercase), refer to [Geofence targeting](/api/campaigns/audience-scheduling-delivery-reference#geofence-targeting).\n","required":["name","latitude","longitude","radius","response_time_value","response_time_granularity","triggered_at"],"properties":{"name":{"type":"string","description":"The unique name of the geofence location being targeted.","isRequired":true,"uniqueKey":"oneOf.0.basic_details.geofences.name","typeLabel":"string"},"latitude":{"type":"string","description":"The latitude coordinate for the center of the geofence area.","isRequired":true,"uniqueKey":"oneOf.0.basic_details.geofences.latitude","typeLabel":"string"},"longitude":{"type":"string","description":"The longitude coordinate for the center of the geofence area.","isRequired":true,"uniqueKey":"oneOf.0.basic_details.geofences.longitude","typeLabel":"string"},"radius":{"type":"string","description":"The radius in meters from the center point that defines the boundary of the geofence.","isRequired":true,"uniqueKey":"oneOf.0.basic_details.geofences.radius","typeLabel":"string"},"response_time_value":{"type":"string","description":"The numeric value for the time to wait before sending the message after the trigger condition is met.","isRequired":true,"uniqueKey":"oneOf.0.basic_details.geofences.response_time_value","typeLabel":"string"},"response_time_granularity":{"type":"string","enum":["MINUTES","HOURS","DAYS"],"description":"The time unit for the response_time_value.","isRequired":true,"uniqueKey":"oneOf.0.basic_details.geofences.response_time_granularity","typeLabel":"enum\u003cstring>"},"triggered_at":{"type":"string","enum":["ENTRY","EXIT","dwell"],"description":"The user action that triggers the campaign (when user enters/exits the geofence).\n","isRequired":true,"uniqueKey":"oneOf.0.basic_details.geofences.triggered_at","typeLabel":"enum\u003cstring>"},"dwell_time_value":{"type":"string","description":"The numeric value for the time to wait before sending the message after the trigger condition is met.\n\n**Required** when triggered_at is set to \"dwell\".\n","uniqueKey":"oneOf.0.basic_details.geofences.dwell_time_value","typeLabel":"string"},"dwell_time_granularity":{"type":"string","enum":["MINUTES","HOURS","DAYS"],"description":"The time unit for the dwell_time_value.\n\n**Required** when triggered_at is set to \"dwell\".\n","uniqueKey":"oneOf.0.basic_details.geofences.dwell_time_granularity","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.basic_details.geofences","typeLabel":"object"},"send_to_triggered_platform_only":{"type":"boolean","description":"Whether to send the campaign only to the platform that triggered the event. Applicable for event-triggered campaigns.","uniqueKey":"oneOf.0.basic_details.send_to_triggered_platform_only","typeLabel":"boolean"},"platform_specific_details":{"type":"object","description":"Platform-specific configuration details for Push.\n\nFor runnable Android and iOS examples and the mutual-exclusion rule on iOS audience flags, refer to [Platform-specific delivery flags](/api/campaigns/campaign-content-reference#platform-specific-delivery-flags).\n","properties":{"android":{"type":"object","properties":{"push_amp_plus_enabled":{"type":"boolean","default":false,"description":"Whether Push Amp+ feature is enabled for this campaign.","uniqueKey":"oneOf.0.basic_details.platform_specific_details.android.push_amp_plus_enabled","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.basic_details.platform_specific_details.android","typeLabel":"object"},"ios":{"type":"object","description":"**Note:** You must pass one of these keys as true for iOS.\n","properties":{"send_to_all_eligible_device":{"type":"boolean","description":"Whether to send the campaign to all eligible devices.","uniqueKey":"oneOf.0.basic_details.platform_specific_details.ios.send_to_all_eligible_device","typeLabel":"boolean"},"exclude_provisional_push_devices":{"type":"boolean","description":"Whether to exclude provisional push devices.","uniqueKey":"oneOf.0.basic_details.platform_specific_details.ios.exclude_provisional_push_devices","typeLabel":"boolean"},"send_to_only_provisional_push_enabled_devices":{"type":"boolean","description":"Whether to send only to provisional push-enabled devices.","uniqueKey":"oneOf.0.basic_details.platform_specific_details.ios.send_to_only_provisional_push_enabled_devices","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.basic_details.platform_specific_details.ios","typeLabel":"object"}},"uniqueKey":"oneOf.0.basic_details.platform_specific_details","typeLabel":"object"}},"uniqueKey":"oneOf.0.basic_details","typeLabel":"object"},"trigger_condition":{"type":"object","description":"Trigger condition details for Push event-triggered, device-triggered, and related campaigns.\n\n**Required** for `EVENT_TRIGGERED`, `DEVICE_TRIGGERED`, and `LOCATION_TRIGGERED` Push campaigns.\n\nFor per-delay-type runnable payloads (`ASAP`, `DELAY` with `AFTER`/`BEFORE`, `INTELLIGENT_DELAY`), filter primitives, and primary/secondary filter combinations, refer to [Trigger conditions](/api/campaigns/audience-scheduling-delivery-reference#trigger-conditions).\n","properties":{"included_filters":{"type":"object","description":"A group of filters combined with a logical operator.\n\nFor detailed segmentation payload and supported fields, refer to [Create Custom Segment](/api/filter-segments/create-filter-segment).\n","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.0.trigger_condition.included_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.0.trigger_condition.included_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.0.trigger_condition.included_filters","typeLabel":"object"},"secondary_included_filters":{"type":"object","description":"Additional filters that must also be satisfied for the trigger to fire. For runnable examples, refer to [Primary and secondary trigger filters](/api/campaigns/audience-scheduling-delivery-reference#primary-and-secondary-trigger-filters).","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.0.trigger_condition.secondary_included_filters","typeLabel":"object"},"trigger_delay_type":{"type":"string","enum":["DELAY","ASAP","INTELLIGENT_DELAY"],"description":"The type of triggered delay.\n\nWhen set to DELAY, the following fields are mandatory:\n- trigger_delay_value\n- trigger_delay_granularity\n- trigger_relation\n","uniqueKey":"oneOf.0.trigger_condition.trigger_delay_type","typeLabel":"enum\u003cstring>"},"trigger_delay_value":{"type":"integer","minimum":0,"description":"The numeric value of the triggered delay.","uniqueKey":"oneOf.0.trigger_condition.trigger_delay_value","typeLabel":"integer"},"trigger_delay_granularity":{"type":"string","enum":["MINUTES","HOURS","DAYS"],"description":"The time unit for the trigger delay.","uniqueKey":"oneOf.0.trigger_condition.trigger_delay_granularity","typeLabel":"enum\u003cstring>"},"trigger_relation":{"type":"string","enum":["BEFORE","AFTER"],"description":"The trigger relation with delay.\n\n**Required** when trigger_delay_type is DELAY.\n","uniqueKey":"oneOf.0.trigger_condition.trigger_relation","typeLabel":"enum\u003cstring>"},"trigger_attr":{"type":"string","description":"The attribute value of the trigger. Pass the string `\"If Action\"` for event-triggered campaigns.","uniqueKey":"oneOf.0.trigger_condition.trigger_attr","typeLabel":"string"},"intelligent_delay_optimization":{"type":"object","description":"Configuration for intelligent delay optimization.\n\nUsed when trigger_delay_type is INTELLIGENT_DELAY. Defines a time window (min/max delay) within which the system finds the optimal moment to send the message.\n","properties":{"min_delay_value":{"type":"integer","description":"The numeric component of the lower bound for the intelligent delay window.","uniqueKey":"oneOf.0.trigger_condition.intelligent_delay_optimization.min_delay_value","typeLabel":"integer"},"min_delay_granularity":{"type":"string","enum":["MINUTES","HOURS"],"description":"The time unit that qualifies the min_delay_value.","uniqueKey":"oneOf.0.trigger_condition.intelligent_delay_optimization.min_delay_granularity","typeLabel":"enum\u003cstring>"},"max_delay_value":{"type":"integer","description":"The numeric component of the upper bound for the intelligent delay window.","uniqueKey":"oneOf.0.trigger_condition.intelligent_delay_optimization.max_delay_value","typeLabel":"integer"},"max_delay_granularity":{"type":"string","enum":["HOURS","DAYS"],"description":"The time unit that qualifies the max_delay_value.","uniqueKey":"oneOf.0.trigger_condition.intelligent_delay_optimization.max_delay_granularity","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.trigger_condition.intelligent_delay_optimization","typeLabel":"object"}},"uniqueKey":"oneOf.0.trigger_condition","typeLabel":"object"},"campaign_content":{"type":"object","description":"Push message content, locales, and A/B variations.\n\nFor full `POST /v5/campaigns` request examples that include `campaign_content`, refer to `campaign_delivery_type` on `PushCampaignCreateV5Request`, `VariationDetails`, and the Create Campaign Draft code samples.\n\nFor per-template-type runnable payloads, refer to [Android push content](/api/campaigns/campaign-content-reference#android-push-content), [iOS push content](/api/campaigns/campaign-content-reference#ios-push-content), or [Web push content](/api/campaigns/campaign-content-reference#web-push-content).\n","properties":{"locales":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.campaign_content.locales.items.[INDEX]","typeLabel":"string"},"description":"Additional locale names for multi-language campaigns. List only the non-default locales here (for example, `\"en-US\"`, `\"es-ES\"`). The `\"default\"` locale is always implicitly present and must not be included in this array.\n","example":["en-US","es-ES"],"uniqueKey":"oneOf.0.campaign_content.locales","typeLabel":"string[]"},"variation_details":{"type":"object","description":"Configuration for A/B testing variations.\n\nFor runnable `MANUAL` (fixed split) and `SHERPA` (auto-optimized) examples, refer to [A/B test variations](/api/campaigns/campaign-content-reference#a%2Fb-test-variations).\n","properties":{"distribution_type":{"type":"string","enum":["SHERPA","MANUAL"],"description":"The traffic distribution method for A/B test variations.\n\n- `MANUAL` - you specify a fixed percentage split across variations.\n- `SHERPA` - MoEngage's AI-powered optimizer automatically shifts traffic toward the best-performing variation during the campaign run.\n","uniqueKey":"oneOf.0.campaign_content.variation_details.distribution_type","typeLabel":"enum\u003cstring>"},"no_of_variations":{"type":"integer","minimum":1,"description":"The number of A/B test variations.","example":2,"uniqueKey":"oneOf.0.campaign_content.variation_details.no_of_variations","typeLabel":"integer"},"manual_distribution_percentage":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"oneOf.0.campaign_content.variation_details.manual_distribution_percentage.additionalProperties","typeLabel":"integer"},"description":"Fixed percentage of audience assigned to each variation. \n**Note:** Variation keys must follow the `variation_N` naming format (e.g. `variation_1`, `variation_2`). Keys with any other format like `var_1`, `1`, `2` will be rejected with a validation error.\n\n**Required** when `distribution_type` is `MANUAL`.\n","example":{"variation_1":50,"variation_2":50},"uniqueKey":"oneOf.0.campaign_content.variation_details.manual_distribution_percentage","typeLabel":"object"},"sherpa_campaign_duration":{"type":"integer","description":"Duration in hours over which MoEngage Sherpa collects performance data before declaring a winning variation.\n\n**Required** when `distribution_type` is `SHERPA`.\n","uniqueKey":"oneOf.0.campaign_content.variation_details.sherpa_campaign_duration","typeLabel":"integer"},"sherpa_distribution_metric":{"type":"string","enum":["OPEN_RATE","CLICK_RATE","BOTH"],"description":"The engagement metric Sherpa uses to evaluate and rank variations.\n\n**Required** when `distribution_type` is `SHERPA`.\n","uniqueKey":"oneOf.0.campaign_content.variation_details.sherpa_distribution_metric","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.campaign_content.variation_details","typeLabel":"object"},"content":{"type":"object","description":"The campaign message payload. Two shapes are accepted:\n\n- **Flat shape (no locales or variations):** Pass a flat `push` object directly under `content`.\n- **Locale-keyed and variation-keyed shape:** Key by locale name, then by variation name: `content[locale_name][variation_name] = { push: { ... } }`. The `\"default\"` locale key is always required and serves as the fallback. Additional locale keys must match values listed in `locales`.\n\u003cWarning>\nIf your V1 integration used locale-variation wrapping, you must continue using that structure in V5. The flat format is only valid when no locales or A/B variations are configured on the campaign.\n\u003c/Warning>\n\nFor runnable payloads for both shapes, refer to [Content payload structure](/api/campaigns/campaign-content-reference#content-payload-structure).\n","properties":{"push":{"type":"object","description":"Push notification content for Android, iOS, and Web platforms.","properties":{"android":{"type":"object","description":"Android push notification content.","properties":{"template_type":{"type":"string","enum":["BASIC","STYLIZED_BASIC","SIMPLE_IMAGE_CAROUSEL","IMAGE_BANNER_WITH_TEXT","TIMER","TIMER_WITH_PROGRESS_BAR","Custom"],"description":"The type of Android push template.\n\n**Note:** If you are passing a template ID, set template_type to \"Custom\" and use `custom_template_id`.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_type","typeLabel":"enum\u003cstring>"},"custom_template_id":{"type":"string","description":"The ID of the custom template.\n\n**Required** when template_type is \"Custom\".\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.custom_template_id","typeLabel":"string"},"custom_template_version":{"type":"integer","description":"The version of the custom template.","uniqueKey":"oneOf.0.campaign_content.content.push.android.custom_template_version","typeLabel":"integer"},"basic_details":{"type":"object","description":"Basic details for the Android push notification. \n\nFields vary by template_type. All templates support common fields like title, message, default_click_action.\n","properties":{"notification_channel":{"type":"string","description":"The Android notification channel where the push will be sent.","example":"general","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.notification_channel","typeLabel":"string"},"include_app_name_and_time":{"type":"boolean","description":"Whether to include the application's name and timestamp within the banner image.\n\n**Supported Templates:** Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.include_app_name_and_time","typeLabel":"boolean"},"background_color_code":{"type":"string","description":"The hex code for the notification's background color.\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","example":"#9a4444","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.background_color_code","typeLabel":"string"},"app_name_color_code":{"type":"string","description":"The hex code for the color of the application's name text.\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","example":"#dea1a1","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.app_name_color_code","typeLabel":"string"},"notification_control_color":{"type":"string","enum":["LIGHT","DARK"],"description":"The color scheme for the notification's control elements (action buttons).\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.notification_control_color","typeLabel":"enum\u003cstring>"},"include_title_and_message":{"type":"boolean","description":"Whether to include the notification's title and message text within the banner image.\n\n**Supported Templates:** Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.include_title_and_message","typeLabel":"boolean"},"apply_background_color_in_text_editor":{"type":"boolean","description":"Whether to apply the specified background color within the rich text editor for preview.\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.apply_background_color_in_text_editor","typeLabel":"boolean"},"title":{"type":"string","description":"The main title of the push notification.","example":"Limited Time Offer!","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.title","typeLabel":"string"},"message":{"type":"string","description":"The message body of the push notification.\n\nYou can use HTML in the message parameter to apply rich text formatting, including text color and styles.\n","example":"Get 50% off on all items. Shop now!","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.message","typeLabel":"string"},"summary":{"type":"string","description":"The summary text for the notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.summary","typeLabel":"string"},"image_url":{"type":"string","format":"uri","description":"The image URL for the push notification.","example":"https://example.com/images/promo.jpg","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.image_url","typeLabel":"string\u003curi>"},"image_scaling":{"type":"string","enum":["FIT_INSIDE_IMAGE_CONTAINER","FILL_IMAGE_CONTAINER"],"description":"The scaling behavior for images within the carousel template.\n\n**Supported Templates:** Simple Image Carousel, Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.image_scaling","typeLabel":"enum\u003cstring>"},"banner_image_url":{"type":"string","format":"uri","description":"The URL for the background image used in the Image Banner Text template.\n\n**Required for:** Image Banner with Text template\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.banner_image_url","typeLabel":"string\u003curi>"},"input_gif_url":{"type":"string","format":"uri","description":"The URL for the GIF media used in the push campaign content.\n\n**Supported Templates:** Basic\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.input_gif_url","typeLabel":"string\u003curi>"},"collapsed_push_notification":{"type":"string","description":"The configuration for the notification's collapsed state (view before user expands it).\n\n**Supported Templates:** Image Banner with Text\n","example":"SAME_AS_TEMPLATE_BACKUP","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.collapsed_push_notification","typeLabel":"string"},"carousel_content":{"type":"object","description":"Configuration for image carousel in Simple Image Carousel template.\n\n**Required for:** Simple Image Carousel template\n","properties":{"slider_transition":{"type":"string","enum":["MANUAL","AUTOMATIC"],"description":"The transition type for the carousel slides.\n\nIn earlier versions of this API, the accepted values were `manual` and `automatic` (lowercase). They are now `MANUAL` and `AUTOMATIC` (uppercase). Update any existing integrations that pass lowercase values.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slider_transition","typeLabel":"enum\u003cstring>"},"slide_data":{"type":"array","description":"Array of slide configurations.","items":{"type":"object","properties":{"image_url":{"type":"string","format":"uri","description":"The image URL for this slide.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX].image_url","typeLabel":"string\u003curi>"},"image_click_action":{"type":"string","enum":["DEEPLINKING","RICH_LANDING","NAVIGATE_TO_A_SCREEN"],"description":"The click action for this slide's image.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action","typeLabel":"enum\u003cstring>"},"image_click_action_value":{"type":"string","description":"The click action value for this slide's image.\n\n**Required** when image_click_action is provided.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content.slide_data","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.carousel_content","typeLabel":"object"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The action performed when the main body of the notification is clicked.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link to open when the notification is clicked.","example":"https://example.com/sale","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs for the notification payload.","uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.basic_details","typeLabel":"object"},"timer":{"type":"object","description":"Timer configuration for Timer and Timer with Progress Bar templates.\n\n**Required for:** TIMER and TIMER_WITH_PROGRESS_BAR templates\n","properties":{"timer_ends_at":{"type":"string","enum":["DURATION","SPECIFIC_TIME_USER_TIMEZONE","SPECIFIC_TIME_CAMPAIGN_TIMEZONE"],"description":"How the timer's endpoint is determined.","uniqueKey":"oneOf.0.campaign_content.content.push.android.timer.timer_ends_at","typeLabel":"enum\u003cstring>"},"specific_time":{"type":"string","format":"date-time","description":"The specific time when the timer ends.\n\n**Required** when personalized_value is true.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.timer.specific_time","typeLabel":"string\u003cdate-time>"},"time_period":{"type":"string","description":"The time period for the timer.\n\n**Required** when timer_ends_at is SPECIFIC_TIME_USER_TIMEZONE or SPECIFIC_TIME_CAMPAIGN_TIMEZONE.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.timer.time_period","typeLabel":"string"},"personalized_value":{"type":"boolean","description":"Whether the timer duration is personalized per user.\n\nIf false, all users get the same duration.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.timer.personalized_value","typeLabel":"boolean"},"duration_hour":{"type":"string","description":"The number of hours the timer will run for.\n\n**Required** when personalized_value is false.\n","example":"2","uniqueKey":"oneOf.0.campaign_content.content.push.android.timer.duration_hour","typeLabel":"string"},"duration_minute":{"type":"string","description":"The number of minutes the timer will run for (in addition to hours).\n\n**Required** when personalized_value is false.\n","example":"30","uniqueKey":"oneOf.0.campaign_content.content.push.android.timer.duration_minute","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.timer","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"Action button configuration for Android push notifications.","properties":{"btn_name":{"type":"string","description":"The text to be displayed on the button.","example":"Shop Now","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].btn_name","typeLabel":"string"},"click_action_type":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING","CALL","SHARE","COPY","SET_USER_ATTRIBUTE","TRACK_EVENT","CUSTOM_ACTION"],"description":"The type of action to perform when the button is clicked.","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].click_action_type","typeLabel":"enum\u003cstring>"},"click_action_name":{"type":"string","description":"The name of the click action.","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].click_action_name","typeLabel":"string"},"click_action_value":{"type":"string","description":"The URL or deep link to open for the button's action.","example":"https://example.com/product","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs specific to this button's click event.","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX].key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons.items.[INDEX]","typeLabel":"object"},"description":"Action buttons for the notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.buttons","typeLabel":"object[]"},"advanced":{"type":"object","description":"Platform-level advanced settings for push delivery - TTL, priority, badge count, and similar controls.","properties":{"coupon_code":{"type":"string","description":"The coupon code to be included in the push payload.","example":"SUMMER50","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.coupon_code","typeLabel":"string"},"icon_type_in_notification":{"type":"string","description":"The icon type to be included in the push payload.","example":"app_icon","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.icon_type_in_notification","typeLabel":"string"},"use_large_icon":{"type":"boolean","description":"Whether to use a large icon in the notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.use_large_icon","typeLabel":"boolean"},"make_notification_sticky":{"type":"boolean","description":"When enabled, the user cannot swipe away the notification.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.make_notification_sticky","typeLabel":"boolean"},"dismiss_button_text":{"type":"string","description":"The text to display on the dismiss button.\n\n**Required** when make_notification_sticky is true or auto_dismiss_notification is true.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.dismiss_button_text","typeLabel":"string"},"auto_dismiss_notification":{"type":"boolean","description":"Whether the notification can be auto-dismissed.","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.auto_dismiss_notification","typeLabel":"boolean"},"auto_dismiss_notification_time_value":{"type":"integer","description":"The time value after which to auto-dismiss the notification.\n\n**Required** when auto_dismiss_notification is true.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.auto_dismiss_notification_time_value","typeLabel":"integer"},"auto_dismiss_notification_time_granularity":{"type":"string","enum":["DAYS","HOURS","MINUTES"],"description":"The time unit for auto-dismiss.\n\n**Required** when auto_dismiss_notification is true.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.auto_dismiss_notification_time_granularity","typeLabel":"enum\u003cstring>"},"group_key":{"type":"string","description":"The group key used to identify and categorize related push notifications.\n\n**Note:**\n- Use the same group key for all push notifications you want to group\n- MoEngage automatically modifies the group key to ensure it doesn't exceed 45 characters\n- Non-Latin scripts, special characters, and spaces are removed\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.group_key","typeLabel":"string"},"collapse_replace_key":{"type":"string","description":"The update key used to identify and update related push notifications.\n\nEnsure you use the same update key for all push notifications intended to update each other.\n","uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced.collapse_replace_key","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.advanced","typeLabel":"object"},"template_backup":{"type":"object","description":"Fallback notification content for when the template cannot be rendered.\n\n**Required for:** Stylized Basic, Simple Image Carousel, Image Banner with Text, Timer, and Timer with Progress Bar templates\n","properties":{"title":{"type":"string","description":"The title for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.title","typeLabel":"string"},"message":{"type":"string","description":"The message body for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.message","typeLabel":"string"},"summary":{"type":"string","description":"The summary for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.summary","typeLabel":"string"},"image_url":{"type":"string","format":"uri","description":"The URL of an image for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.image_url","typeLabel":"string\u003curi>"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The default click action for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link for the fallback's click action.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs specific to the fallback payload.","uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android.template_backup","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.push.android","typeLabel":"object"},"ios":{"type":"object","description":"iOS push notification content.","properties":{"template_type":{"type":"string","enum":["BASIC","STYLIZED_BASIC","SIMPLE_IMAGE_CAROUSEL","Custom"],"description":"The type of iOS push template.\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_type","typeLabel":"enum\u003cstring>"},"custom_template_id":{"type":"string","description":"The ID of the custom template.\n\n**Required** when template_type is \"Custom\".\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.custom_template_id","typeLabel":"string"},"custom_template_version":{"type":"integer","description":"The version of the custom template.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.custom_template_version","typeLabel":"integer"},"basic_details":{"type":"object","description":"Basic details for the iOS push notification.","properties":{"background_color_code":{"type":"string","description":"The hexadecimal color code for the notification's background.\n\n**Supported Templates:** Simple Image Carousel, Stylized Basic\n","example":"#a0a0a0","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.background_color_code","typeLabel":"string"},"apply_background_color_in_text_editor":{"type":"boolean","description":"Whether to apply the background color within the text editor view.\n\n**Supported Templates:** Simple Image Carousel, Stylized Basic\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.apply_background_color_in_text_editor","typeLabel":"boolean"},"title":{"type":"string","description":"The main title of the push notification.","example":"New Message","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.title","typeLabel":"string"},"message":{"type":"string","description":"The main body text of the notification.","example":"You have a new message waiting for you","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.message","typeLabel":"string"},"subtitle":{"type":"string","description":"The subtitle displayed below the main title.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.subtitle","typeLabel":"string"},"allow_bg_refresh":{"type":"boolean","description":"Whether to allow the app to be woken up in the background to refresh content.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.allow_bg_refresh","typeLabel":"boolean"},"rich_media_type":{"type":"string","enum":["Image","Video","GIF"],"description":"The type of rich media to be included in the notification.\n\n**Supported Templates:** Basic\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.rich_media_type","typeLabel":"enum\u003cstring>"},"rich_media_value":{"type":"string","format":"uri","description":"The URL of the rich media asset specified in the rich_media_type field.\n\n**Supported Templates:** Basic\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.rich_media_value","typeLabel":"string\u003curi>"},"image_url":{"type":"string","format":"uri","description":"The URL of a large image to be displayed within the notification content.\n\n**Note:** Required when template_type is SIMPLE_IMAGE_CAROUSEL.\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.image_url","typeLabel":"string\u003curi>"},"input_gif_url":{"type":"string","format":"uri","description":"The URL for the GIF media used in the push campaign content.\n\n**Supported Templates:** Basic, Stylized Basic\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.input_gif_url","typeLabel":"string\u003curi>"},"carousel_content":{"type":"object","description":"Configuration for image carousel in Simple Image Carousel template.\n\n**Required for:** Simple Image Carousel template\n","properties":{"slider_transition":{"type":"string","enum":["MANUAL","AUTOMATIC"],"description":"The transition type for the carousel slides.\n\nIn earlier versions of this API, the accepted values were `manual` and `automatic` (lowercase). They are now `MANUAL` and `AUTOMATIC` (uppercase). Update any existing integrations that pass lowercase values.\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slider_transition","typeLabel":"enum\u003cstring>"},"slide_data":{"type":"array","description":"Array of slide configurations.","items":{"type":"object","properties":{"image_url":{"type":"string","format":"uri","description":"The image URL for this slide.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].image_url","typeLabel":"string\u003curi>"},"image_click_action":{"type":"string","enum":["DEEPLINKING","RICH_LANDING","NAVIGATE_TO_A_SCREEN"],"description":"The click action for this slide's image.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action","typeLabel":"enum\u003cstring>"},"image_click_action_value":{"type":"string","description":"The click action value for this slide's image.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content.slide_data","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.carousel_content","typeLabel":"object"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The action performed when the main body of the notification is tapped.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link associated with the default click action.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs sent with the push payload for in-app handling.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.basic_details","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"Action button configuration for iOS push notifications.","properties":{"button_category":{"type":"string","description":"The pre-defined category name for a set of interactive buttons configured in the app.\n","example":"MOE_PUSH_TEMPLATE","uniqueKey":"oneOf.0.campaign_content.content.push.ios.buttons.items.[INDEX].button_category","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.buttons.items.[INDEX]","typeLabel":"object"},"description":"Action buttons for the notification.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.buttons","typeLabel":"object[]"},"advanced":{"type":"object","description":"Platform-level advanced settings for push delivery - TTL, priority, badge count, and similar controls.","properties":{"coupon_code":{"type":"string","description":"The coupon code to be included in the push payload.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.advanced.coupon_code","typeLabel":"string"},"sound_file":{"type":"string","description":"The name of a custom sound file located in the app bundle to play upon receiving the notification.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.advanced.sound_file","typeLabel":"string"},"enable_ios_badge":{"type":"boolean","description":"Whether this campaign allows the notification to increment the app's badge count.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.advanced.enable_ios_badge","typeLabel":"boolean"},"group_key":{"type":"string","description":"The group key used to identify and categorize related push notifications.\n\n**Note:**\n- Use the same group key for all push notifications you want to group\n- MoEngage automatically modifies the group key to ensure it doesn't exceed 45 characters\n- Non-Latin scripts, special characters, and spaces are removed\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.advanced.group_key","typeLabel":"string"},"collapse_replace_key":{"type":"string","description":"The update key used to identify and update related push notifications.\n\nEnsure you use the same update key for all push notifications intended to update each other.\n","uniqueKey":"oneOf.0.campaign_content.content.push.ios.advanced.collapse_replace_key","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.advanced","typeLabel":"object"},"template_backup":{"type":"object","description":"Fallback notification content for when the template cannot be rendered.\n\n**Required for:** Stylized Basic and Simple Image Carousel templates\n","properties":{"title":{"type":"string","description":"The title for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.title","typeLabel":"string"},"message":{"type":"string","description":"The message body for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.message","typeLabel":"string"},"subtitle":{"type":"string","description":"The subtitle for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.subtitle","typeLabel":"string"},"allow_bg_refresh":{"type":"boolean","description":"Whether to enable background app refresh for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.allow_bg_refresh","typeLabel":"boolean"},"rich_media_type":{"type":"string","enum":["Image","Video","GIF"],"description":"The type of media attachment for the fallback.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.rich_media_type","typeLabel":"enum\u003cstring>"},"rich_media_value":{"type":"string","format":"uri","description":"The URL of the media attachment for the fallback.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.rich_media_value","typeLabel":"string\u003curi>"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The default click action for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link for the fallback's click action.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs specific to the fallback payload.","uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios.template_backup","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.push.ios","typeLabel":"object"},"web":{"type":"object","description":"Web push notification content.","properties":{"template_type":{"type":"string","enum":["BASIC"],"description":"The template type for web push (currently only BASIC is supported).","uniqueKey":"oneOf.0.campaign_content.content.push.web.template_type","typeLabel":"enum\u003cstring>"},"basic_details":{"type":"object","description":"Basic details for the Web push notification.","properties":{"title":{"type":"string","description":"The title text displayed at the top of the notification.","example":"Special Offer","uniqueKey":"oneOf.0.campaign_content.content.push.web.basic_details.title","typeLabel":"string"},"message":{"type":"string","description":"The main body text of the notification.","example":"Check out our latest deals!","uniqueKey":"oneOf.0.campaign_content.content.push.web.basic_details.message","typeLabel":"string"},"redirect_url":{"type":"string","format":"uri","description":"The URL that the user is redirected to when they click the main body of the notification.","example":"https://example.com/offers","uniqueKey":"oneOf.0.campaign_content.content.push.web.basic_details.redirect_url","typeLabel":"string\u003curi>"},"image_url":{"type":"string","format":"uri","description":"The URL of a large image to be displayed within the notification content.","uniqueKey":"oneOf.0.campaign_content.content.push.web.basic_details.image_url","typeLabel":"string\u003curi>"},"auto_dismiss_notification":{"type":"boolean","description":"Whether the notification should auto-dismiss.","uniqueKey":"oneOf.0.campaign_content.content.push.web.basic_details.auto_dismiss_notification","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.campaign_content.content.push.web.basic_details","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"Action button configuration for Web push notifications.","properties":{"title":{"type":"string","description":"The text displayed on the button.","example":"View Offer","uniqueKey":"oneOf.0.campaign_content.content.push.web.buttons.items.[INDEX].title","typeLabel":"string"},"icon_url":{"type":"string","format":"uri","description":"The URL of an icon to be displayed next to the button text.","uniqueKey":"oneOf.0.campaign_content.content.push.web.buttons.items.[INDEX].icon_url","typeLabel":"string\u003curi>"},"url":{"type":"string","format":"uri","description":"The destination URL that the user is redirected to when they click this button.","uniqueKey":"oneOf.0.campaign_content.content.push.web.buttons.items.[INDEX].url","typeLabel":"string\u003curi>"}},"uniqueKey":"oneOf.0.campaign_content.content.push.web.buttons.items.[INDEX]","typeLabel":"object"},"description":"Action buttons for the notification.\n","uniqueKey":"oneOf.0.campaign_content.content.push.web.buttons","typeLabel":"object[]"},"advanced":{"type":"object","description":"Platform-level advanced settings for push delivery - TTL, priority, badge count, and similar controls.\n","properties":{"icon_image_type":{"type":"string","enum":["DEFAULT","ICON_URL"],"description":"The type of icon to use for the notification.","uniqueKey":"oneOf.0.campaign_content.content.push.web.advanced.icon_image_type","typeLabel":"enum\u003cstring>"},"icon_url":{"type":"string","format":"uri","description":"The URL for a custom notification icon.","uniqueKey":"oneOf.0.campaign_content.content.push.web.advanced.icon_url","typeLabel":"string\u003curi>"}},"uniqueKey":"oneOf.0.campaign_content.content.push.web.advanced","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.push.web","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.push","typeLabel":"object"}},"additionalProperties":{"type":"object","description":"Variation-keyed content blocks for a single locale.","additionalProperties":{"type":"object","properties":{"push":{"type":"object","description":"Push notification content for Android, iOS, and Web platforms.","properties":{"android":{"type":"object","description":"Android push notification content.","properties":{"template_type":{"type":"string","enum":["BASIC","STYLIZED_BASIC","SIMPLE_IMAGE_CAROUSEL","IMAGE_BANNER_WITH_TEXT","TIMER","TIMER_WITH_PROGRESS_BAR","Custom"],"description":"The type of Android push template.\n\n**Note:** If you are passing a template ID, set template_type to \"Custom\" and use `custom_template_id`.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_type","typeLabel":"enum\u003cstring>"},"custom_template_id":{"type":"string","description":"The ID of the custom template.\n\n**Required** when template_type is \"Custom\".\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.custom_template_id","typeLabel":"string"},"custom_template_version":{"type":"integer","description":"The version of the custom template.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.custom_template_version","typeLabel":"integer"},"basic_details":{"type":"object","description":"Basic details for the Android push notification. \n\nFields vary by template_type. All templates support common fields like title, message, default_click_action.\n","properties":{"notification_channel":{"type":"string","description":"The Android notification channel where the push will be sent.","example":"general","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.notification_channel","typeLabel":"string"},"include_app_name_and_time":{"type":"boolean","description":"Whether to include the application's name and timestamp within the banner image.\n\n**Supported Templates:** Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.include_app_name_and_time","typeLabel":"boolean"},"background_color_code":{"type":"string","description":"The hex code for the notification's background color.\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","example":"#9a4444","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.background_color_code","typeLabel":"string"},"app_name_color_code":{"type":"string","description":"The hex code for the color of the application's name text.\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","example":"#dea1a1","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.app_name_color_code","typeLabel":"string"},"notification_control_color":{"type":"string","enum":["LIGHT","DARK"],"description":"The color scheme for the notification's control elements (action buttons).\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.notification_control_color","typeLabel":"enum\u003cstring>"},"include_title_and_message":{"type":"boolean","description":"Whether to include the notification's title and message text within the banner image.\n\n**Supported Templates:** Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.include_title_and_message","typeLabel":"boolean"},"apply_background_color_in_text_editor":{"type":"boolean","description":"Whether to apply the specified background color within the rich text editor for preview.\n\n**Supported Templates:** Stylized Basic, Simple Image Carousel, Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.apply_background_color_in_text_editor","typeLabel":"boolean"},"title":{"type":"string","description":"The main title of the push notification.","example":"Limited Time Offer!","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.title","typeLabel":"string"},"message":{"type":"string","description":"The message body of the push notification.\n\nYou can use HTML in the message parameter to apply rich text formatting, including text color and styles.\n","example":"Get 50% off on all items. Shop now!","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.message","typeLabel":"string"},"summary":{"type":"string","description":"The summary text for the notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.summary","typeLabel":"string"},"image_url":{"type":"string","format":"uri","description":"The image URL for the push notification.","example":"https://example.com/images/promo.jpg","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.image_url","typeLabel":"string\u003curi>"},"image_scaling":{"type":"string","enum":["FIT_INSIDE_IMAGE_CONTAINER","FILL_IMAGE_CONTAINER"],"description":"The scaling behavior for images within the carousel template.\n\n**Supported Templates:** Simple Image Carousel, Image Banner with Text\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.image_scaling","typeLabel":"enum\u003cstring>"},"banner_image_url":{"type":"string","format":"uri","description":"The URL for the background image used in the Image Banner Text template.\n\n**Required for:** Image Banner with Text template\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.banner_image_url","typeLabel":"string\u003curi>"},"input_gif_url":{"type":"string","format":"uri","description":"The URL for the GIF media used in the push campaign content.\n\n**Supported Templates:** Basic\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.input_gif_url","typeLabel":"string\u003curi>"},"collapsed_push_notification":{"type":"string","description":"The configuration for the notification's collapsed state (view before user expands it).\n\n**Supported Templates:** Image Banner with Text\n","example":"SAME_AS_TEMPLATE_BACKUP","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.collapsed_push_notification","typeLabel":"string"},"carousel_content":{"type":"object","description":"Configuration for image carousel in Simple Image Carousel template.\n\n**Required for:** Simple Image Carousel template\n","properties":{"slider_transition":{"type":"string","enum":["MANUAL","AUTOMATIC"],"description":"The transition type for the carousel slides.\n\nIn earlier versions of this API, the accepted values were `manual` and `automatic` (lowercase). They are now `MANUAL` and `AUTOMATIC` (uppercase). Update any existing integrations that pass lowercase values.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slider_transition","typeLabel":"enum\u003cstring>"},"slide_data":{"type":"array","description":"Array of slide configurations.","items":{"type":"object","properties":{"image_url":{"type":"string","format":"uri","description":"The image URL for this slide.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX].image_url","typeLabel":"string\u003curi>"},"image_click_action":{"type":"string","enum":["DEEPLINKING","RICH_LANDING","NAVIGATE_TO_A_SCREEN"],"description":"The click action for this slide's image.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action","typeLabel":"enum\u003cstring>"},"image_click_action_value":{"type":"string","description":"The click action value for this slide's image.\n\n**Required** when image_click_action is provided.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content.slide_data","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.carousel_content","typeLabel":"object"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The action performed when the main body of the notification is clicked.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link to open when the notification is clicked.","example":"https://example.com/sale","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs for the notification payload.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.basic_details","typeLabel":"object"},"timer":{"type":"object","description":"Timer configuration for Timer and Timer with Progress Bar templates.\n\n**Required for:** TIMER and TIMER_WITH_PROGRESS_BAR templates\n","properties":{"timer_ends_at":{"type":"string","enum":["DURATION","SPECIFIC_TIME_USER_TIMEZONE","SPECIFIC_TIME_CAMPAIGN_TIMEZONE"],"description":"How the timer's endpoint is determined.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.timer.timer_ends_at","typeLabel":"enum\u003cstring>"},"specific_time":{"type":"string","format":"date-time","description":"The specific time when the timer ends.\n\n**Required** when personalized_value is true.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.timer.specific_time","typeLabel":"string\u003cdate-time>"},"time_period":{"type":"string","description":"The time period for the timer.\n\n**Required** when timer_ends_at is SPECIFIC_TIME_USER_TIMEZONE or SPECIFIC_TIME_CAMPAIGN_TIMEZONE.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.timer.time_period","typeLabel":"string"},"personalized_value":{"type":"boolean","description":"Whether the timer duration is personalized per user.\n\nIf false, all users get the same duration.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.timer.personalized_value","typeLabel":"boolean"},"duration_hour":{"type":"string","description":"The number of hours the timer will run for.\n\n**Required** when personalized_value is false.\n","example":"2","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.timer.duration_hour","typeLabel":"string"},"duration_minute":{"type":"string","description":"The number of minutes the timer will run for (in addition to hours).\n\n**Required** when personalized_value is false.\n","example":"30","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.timer.duration_minute","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.timer","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"Action button configuration for Android push notifications.","properties":{"btn_name":{"type":"string","description":"The text to be displayed on the button.","example":"Shop Now","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].btn_name","typeLabel":"string"},"click_action_type":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING","CALL","SHARE","COPY","SET_USER_ATTRIBUTE","TRACK_EVENT","CUSTOM_ACTION"],"description":"The type of action to perform when the button is clicked.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].click_action_type","typeLabel":"enum\u003cstring>"},"click_action_name":{"type":"string","description":"The name of the click action.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].click_action_name","typeLabel":"string"},"click_action_value":{"type":"string","description":"The URL or deep link to open for the button's action.","example":"https://example.com/product","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs specific to this button's click event.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX].key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons.items.[INDEX]","typeLabel":"object"},"description":"Action buttons for the notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.buttons","typeLabel":"object[]"},"advanced":{"type":"object","description":"Platform-level advanced settings for push delivery - TTL, priority, badge count, and similar controls.","properties":{"coupon_code":{"type":"string","description":"The coupon code to be included in the push payload.","example":"SUMMER50","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.coupon_code","typeLabel":"string"},"icon_type_in_notification":{"type":"string","description":"The icon type to be included in the push payload.","example":"app_icon","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.icon_type_in_notification","typeLabel":"string"},"use_large_icon":{"type":"boolean","description":"Whether to use a large icon in the notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.use_large_icon","typeLabel":"boolean"},"make_notification_sticky":{"type":"boolean","description":"When enabled, the user cannot swipe away the notification.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.make_notification_sticky","typeLabel":"boolean"},"dismiss_button_text":{"type":"string","description":"The text to display on the dismiss button.\n\n**Required** when make_notification_sticky is true or auto_dismiss_notification is true.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.dismiss_button_text","typeLabel":"string"},"auto_dismiss_notification":{"type":"boolean","description":"Whether the notification can be auto-dismissed.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.auto_dismiss_notification","typeLabel":"boolean"},"auto_dismiss_notification_time_value":{"type":"integer","description":"The time value after which to auto-dismiss the notification.\n\n**Required** when auto_dismiss_notification is true.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.auto_dismiss_notification_time_value","typeLabel":"integer"},"auto_dismiss_notification_time_granularity":{"type":"string","enum":["DAYS","HOURS","MINUTES"],"description":"The time unit for auto-dismiss.\n\n**Required** when auto_dismiss_notification is true.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.auto_dismiss_notification_time_granularity","typeLabel":"enum\u003cstring>"},"group_key":{"type":"string","description":"The group key used to identify and categorize related push notifications.\n\n**Note:**\n- Use the same group key for all push notifications you want to group\n- MoEngage automatically modifies the group key to ensure it doesn't exceed 45 characters\n- Non-Latin scripts, special characters, and spaces are removed\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.group_key","typeLabel":"string"},"collapse_replace_key":{"type":"string","description":"The update key used to identify and update related push notifications.\n\nEnsure you use the same update key for all push notifications intended to update each other.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced.collapse_replace_key","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.advanced","typeLabel":"object"},"template_backup":{"type":"object","description":"Fallback notification content for when the template cannot be rendered.\n\n**Required for:** Stylized Basic, Simple Image Carousel, Image Banner with Text, Timer, and Timer with Progress Bar templates\n","properties":{"title":{"type":"string","description":"The title for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.title","typeLabel":"string"},"message":{"type":"string","description":"The message body for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.message","typeLabel":"string"},"summary":{"type":"string","description":"The summary for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.summary","typeLabel":"string"},"image_url":{"type":"string","format":"uri","description":"The URL of an image for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.image_url","typeLabel":"string\u003curi>"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The default click action for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link for the fallback's click action.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs specific to the fallback payload.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android.template_backup","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.android","typeLabel":"object"},"ios":{"type":"object","description":"iOS push notification content.","properties":{"template_type":{"type":"string","enum":["BASIC","STYLIZED_BASIC","SIMPLE_IMAGE_CAROUSEL","Custom"],"description":"The type of iOS push template.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_type","typeLabel":"enum\u003cstring>"},"custom_template_id":{"type":"string","description":"The ID of the custom template.\n\n**Required** when template_type is \"Custom\".\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.custom_template_id","typeLabel":"string"},"custom_template_version":{"type":"integer","description":"The version of the custom template.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.custom_template_version","typeLabel":"integer"},"basic_details":{"type":"object","description":"Basic details for the iOS push notification.","properties":{"background_color_code":{"type":"string","description":"The hexadecimal color code for the notification's background.\n\n**Supported Templates:** Simple Image Carousel, Stylized Basic\n","example":"#a0a0a0","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.background_color_code","typeLabel":"string"},"apply_background_color_in_text_editor":{"type":"boolean","description":"Whether to apply the background color within the text editor view.\n\n**Supported Templates:** Simple Image Carousel, Stylized Basic\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.apply_background_color_in_text_editor","typeLabel":"boolean"},"title":{"type":"string","description":"The main title of the push notification.","example":"New Message","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.title","typeLabel":"string"},"message":{"type":"string","description":"The main body text of the notification.","example":"You have a new message waiting for you","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.message","typeLabel":"string"},"subtitle":{"type":"string","description":"The subtitle displayed below the main title.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.subtitle","typeLabel":"string"},"allow_bg_refresh":{"type":"boolean","description":"Whether to allow the app to be woken up in the background to refresh content.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.allow_bg_refresh","typeLabel":"boolean"},"rich_media_type":{"type":"string","enum":["Image","Video","GIF"],"description":"The type of rich media to be included in the notification.\n\n**Supported Templates:** Basic\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.rich_media_type","typeLabel":"enum\u003cstring>"},"rich_media_value":{"type":"string","format":"uri","description":"The URL of the rich media asset specified in the rich_media_type field.\n\n**Supported Templates:** Basic\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.rich_media_value","typeLabel":"string\u003curi>"},"image_url":{"type":"string","format":"uri","description":"The URL of a large image to be displayed within the notification content.\n\n**Note:** Required when template_type is SIMPLE_IMAGE_CAROUSEL.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.image_url","typeLabel":"string\u003curi>"},"input_gif_url":{"type":"string","format":"uri","description":"The URL for the GIF media used in the push campaign content.\n\n**Supported Templates:** Basic, Stylized Basic\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.input_gif_url","typeLabel":"string\u003curi>"},"carousel_content":{"type":"object","description":"Configuration for image carousel in Simple Image Carousel template.\n\n**Required for:** Simple Image Carousel template\n","properties":{"slider_transition":{"type":"string","enum":["MANUAL","AUTOMATIC"],"description":"The transition type for the carousel slides.\n\nIn earlier versions of this API, the accepted values were `manual` and `automatic` (lowercase). They are now `MANUAL` and `AUTOMATIC` (uppercase). Update any existing integrations that pass lowercase values.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slider_transition","typeLabel":"enum\u003cstring>"},"slide_data":{"type":"array","description":"Array of slide configurations.","items":{"type":"object","properties":{"image_url":{"type":"string","format":"uri","description":"The image URL for this slide.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].image_url","typeLabel":"string\u003curi>"},"image_click_action":{"type":"string","enum":["DEEPLINKING","RICH_LANDING","NAVIGATE_TO_A_SCREEN"],"description":"The click action for this slide's image.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action","typeLabel":"enum\u003cstring>"},"image_click_action_value":{"type":"string","description":"The click action value for this slide's image.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].image_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX].key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content.slide_data","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.carousel_content","typeLabel":"object"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The action performed when the main body of the notification is tapped.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link associated with the default click action.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs sent with the push payload for in-app handling.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.basic_details","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"Action button configuration for iOS push notifications.","properties":{"button_category":{"type":"string","description":"The pre-defined category name for a set of interactive buttons configured in the app.\n","example":"MOE_PUSH_TEMPLATE","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.buttons.items.[INDEX].button_category","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.buttons.items.[INDEX]","typeLabel":"object"},"description":"Action buttons for the notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.buttons","typeLabel":"object[]"},"advanced":{"type":"object","description":"Platform-level advanced settings for push delivery - TTL, priority, badge count, and similar controls.","properties":{"coupon_code":{"type":"string","description":"The coupon code to be included in the push payload.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.advanced.coupon_code","typeLabel":"string"},"sound_file":{"type":"string","description":"The name of a custom sound file located in the app bundle to play upon receiving the notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.advanced.sound_file","typeLabel":"string"},"enable_ios_badge":{"type":"boolean","description":"Whether this campaign allows the notification to increment the app's badge count.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.advanced.enable_ios_badge","typeLabel":"boolean"},"group_key":{"type":"string","description":"The group key used to identify and categorize related push notifications.\n\n**Note:**\n- Use the same group key for all push notifications you want to group\n- MoEngage automatically modifies the group key to ensure it doesn't exceed 45 characters\n- Non-Latin scripts, special characters, and spaces are removed\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.advanced.group_key","typeLabel":"string"},"collapse_replace_key":{"type":"string","description":"The update key used to identify and update related push notifications.\n\nEnsure you use the same update key for all push notifications intended to update each other.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.advanced.collapse_replace_key","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.advanced","typeLabel":"object"},"template_backup":{"type":"object","description":"Fallback notification content for when the template cannot be rendered.\n\n**Required for:** Stylized Basic and Simple Image Carousel templates\n","properties":{"title":{"type":"string","description":"The title for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.title","typeLabel":"string"},"message":{"type":"string","description":"The message body for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.message","typeLabel":"string"},"subtitle":{"type":"string","description":"The subtitle for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.subtitle","typeLabel":"string"},"allow_bg_refresh":{"type":"boolean","description":"Whether to enable background app refresh for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.allow_bg_refresh","typeLabel":"boolean"},"rich_media_type":{"type":"string","enum":["Image","Video","GIF"],"description":"The type of media attachment for the fallback.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.rich_media_type","typeLabel":"enum\u003cstring>"},"rich_media_value":{"type":"string","format":"uri","description":"The URL of the media attachment for the fallback.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.rich_media_value","typeLabel":"string\u003curi>"},"default_click_action":{"type":"string","enum":["DEEPLINKING","NAVIGATE_TO_A_SCREEN","RICH_LANDING"],"description":"The default click action for the fallback notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.default_click_action","typeLabel":"enum\u003cstring>"},"default_click_action_value":{"type":"string","description":"The URL or deep link for the fallback's click action.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.default_click_action_value","typeLabel":"string"},"key_value_pairs":{"type":"array","items":{"type":"object","description":"A custom key-value pair attached to the push payload.","properties":{"key":{"type":"string","description":"The key name.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.key_value_pairs.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"The value.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.key_value_pairs.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.key_value_pairs.items.[INDEX]","typeLabel":"object"},"description":"Custom key-value pairs specific to the fallback payload.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup.key_value_pairs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios.template_backup","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.ios","typeLabel":"object"},"web":{"type":"object","description":"Web push notification content.","properties":{"template_type":{"type":"string","enum":["BASIC"],"description":"The template type for web push (currently only BASIC is supported).","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.template_type","typeLabel":"enum\u003cstring>"},"basic_details":{"type":"object","description":"Basic details for the Web push notification.","properties":{"title":{"type":"string","description":"The title text displayed at the top of the notification.","example":"Special Offer","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.basic_details.title","typeLabel":"string"},"message":{"type":"string","description":"The main body text of the notification.","example":"Check out our latest deals!","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.basic_details.message","typeLabel":"string"},"redirect_url":{"type":"string","format":"uri","description":"The URL that the user is redirected to when they click the main body of the notification.","example":"https://example.com/offers","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.basic_details.redirect_url","typeLabel":"string\u003curi>"},"image_url":{"type":"string","format":"uri","description":"The URL of a large image to be displayed within the notification content.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.basic_details.image_url","typeLabel":"string\u003curi>"},"auto_dismiss_notification":{"type":"boolean","description":"Whether the notification should auto-dismiss.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.basic_details.auto_dismiss_notification","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.basic_details","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"Action button configuration for Web push notifications.","properties":{"title":{"type":"string","description":"The text displayed on the button.","example":"View Offer","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.buttons.items.[INDEX].title","typeLabel":"string"},"icon_url":{"type":"string","format":"uri","description":"The URL of an icon to be displayed next to the button text.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.buttons.items.[INDEX].icon_url","typeLabel":"string\u003curi>"},"url":{"type":"string","format":"uri","description":"The destination URL that the user is redirected to when they click this button.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.buttons.items.[INDEX].url","typeLabel":"string\u003curi>"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.buttons.items.[INDEX]","typeLabel":"object"},"description":"Action buttons for the notification.\n","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.buttons","typeLabel":"object[]"},"advanced":{"type":"object","description":"Platform-level advanced settings for push delivery - TTL, priority, badge count, and similar controls.\n","properties":{"icon_image_type":{"type":"string","enum":["DEFAULT","ICON_URL"],"description":"The type of icon to use for the notification.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.advanced.icon_image_type","typeLabel":"enum\u003cstring>"},"icon_url":{"type":"string","format":"uri","description":"The URL for a custom notification icon.","uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.advanced.icon_url","typeLabel":"string\u003curi>"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web.advanced","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push.web","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties.push","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties.additionalProperties","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content.additionalProperties","typeLabel":"object"},"uniqueKey":"oneOf.0.campaign_content.content","typeLabel":"object"}},"uniqueKey":"oneOf.0.campaign_content","typeLabel":"object"},"segmentation_details":{"type":"object","description":"Defines the target audience for the campaign.\n\nFor included/excluded filter combinations, filter primitives (`user_attributes`, `actions`, `custom_segments`), and opt-out targeting, refer to [Campaign audience](/api/campaigns/audience-scheduling-delivery-reference#campaign-audience).\n","properties":{"included_filters":{"type":"object","description":"A group of filters combined with a logical operator.\n\nFor detailed segmentation payload and supported fields, refer to [Create Custom Segment](/api/filter-segments/create-filter-segment).\n","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.0.segmentation_details.included_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.0.segmentation_details.included_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.0.segmentation_details.included_filters","typeLabel":"object"},"excluded_filters":{"type":"object","description":"Filters that exclude users from the campaign audience.\n","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.0.segmentation_details.excluded_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.0.segmentation_details.excluded_filters","typeLabel":"object"},"is_all_user_campaign":{"type":"boolean","description":"Whether to include all users in the campaign.","uniqueKey":"oneOf.0.segmentation_details.is_all_user_campaign","typeLabel":"boolean"},"send_campaign_to_opt_out_users":{"type":"boolean","description":"Whether to send the campaign to users who have opted out. For runnable examples, refer to [Campaign audience](/api/campaigns/audience-scheduling-delivery-reference#campaign-audience).","uniqueKey":"oneOf.0.segmentation_details.send_campaign_to_opt_out_users","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.segmentation_details","typeLabel":"object"},"scheduling_details":{"type":"object","description":"Defines when the campaign should be sent.\n\nFor per-delivery-type runnable payloads (`ASAP`, `AT_FIXED_TIME`, `SEND_IN_BTS`, `SEND_IN_USER_TIMEZONE`, and `PERIODIC` with `periodic_details`), refer to [Campaign delivery schedule](/api/campaigns/audience-scheduling-delivery-reference#campaign-delivery-schedule).\n","properties":{"delivery_type":{"type":"string","enum":["ASAP","AT_FIXED_TIME","SEND_IN_BTS","SEND_IN_USER_TIMEZONE"],"description":"When to deliver the campaign.\n","uniqueKey":"oneOf.0.scheduling_details.delivery_type","typeLabel":"enum\u003cstring>"},"start_time":{"type":"string","format":"date-time","description":"The start time for the campaign in ISO 8601 format. Interpreted in the timezone specified by the `timezone` field. If `timezone` is not provided, pass this value in UTC.\n\nExample: \"2024-06-21T12:59:00\"\n","uniqueKey":"oneOf.0.scheduling_details.start_time","typeLabel":"string\u003cdate-time>"},"expiry_time":{"type":"string","format":"date-time","description":"The expiry time for the campaign in ISO 8601 format. Interpreted in the timezone specified by the `timezone` field. If `timezone` is not provided, pass this value in UTC.\n","uniqueKey":"oneOf.0.scheduling_details.expiry_time","typeLabel":"string\u003cdate-time>"},"timezone":{"type":"string","description":"IANA timezone string for the campaign schedule (for example, `Asia/Kolkata`). Required when `delivery_type` is `AT_FIXED_TIME` or `SEND_IN_BTS`. Optional for `SEND_IN_USER_TIMEZONE`, where each user's own timezone is used.\n","example":"Asia/Kolkata","uniqueKey":"oneOf.0.scheduling_details.timezone","typeLabel":"string"},"periodic_details":{"type":"object","description":"Configuration for periodic campaigns.\n\n**Required** for PERIODIC campaigns.\n\nFor runnable Daily, Weekly, Monthly (specific dates), and Monthly (first Monday) examples, refer to [Periodic schedules](/api/campaigns/audience-scheduling-delivery-reference#periodic-schedules).\n","properties":{"sending_frequency":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY"],"description":"The frequency to send the campaign.","uniqueKey":"oneOf.0.scheduling_details.periodic_details.sending_frequency","typeLabel":"enum\u003cstring>"},"repeat_frequency":{"type":"integer","description":"The repeat frequency of the campaign.","uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_frequency","typeLabel":"integer"},"no_of_occurences":{"type":"integer","description":"The number of occurrences of the campaign.","uniqueKey":"oneOf.0.scheduling_details.periodic_details.no_of_occurences","typeLabel":"integer"},"repeat_on_date_of_month":{"type":"array","items":{"type":"integer","uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_date_of_month.items.[INDEX]","typeLabel":"integer"},"description":"The dates of the month on which the campaign should be repeated.\n\nExample: [5, 25] to send on the 5th and 25th of each month.\n","uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_date_of_month","typeLabel":"integer[]"},"repeat_on_days_of_week":{"type":"array","items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"],"uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_days_of_week.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The days of the week on which the campaign should repeat.\n","uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_days_of_week","typeLabel":"enum\u003cstring>[]"},"repeat_on_days_of_week_for_month":{"type":"array","items":{"type":"object","properties":{"week_granularity":{"type":"string","enum":["FIRST","SECOND","THIRD","FOURTH","LAST"],"uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX].week_granularity","typeLabel":"enum\u003cstring>"},"repeat_on_days_of_week":{"type":"array","items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"],"uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX].repeat_on_days_of_week.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX].repeat_on_days_of_week","typeLabel":"enum\u003cstring>[]"}},"uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX]","typeLabel":"object"},"description":"Configuration for repeating on specific weeks of the month.\n","uniqueKey":"oneOf.0.scheduling_details.periodic_details.repeat_on_days_of_week_for_month","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.scheduling_details.periodic_details","typeLabel":"object"},"bts_details":{"type":"object","description":"Best Time to Send (BTS) configuration.\n\nBTS selects an optimal send time per user based on historical engagement patterns.\n\nFor the field schema and required-when-`SEND_IN_BTS` rule, refer to [Best Time to Send](/api/campaigns/audience-scheduling-delivery-reference#best-time-to-send).\n","properties":{"send_in_bts":{"type":"boolean","description":"Whether to send the campaign at the best time.","uniqueKey":"oneOf.0.scheduling_details.bts_details.send_in_bts","typeLabel":"boolean"},"if_user_bts_is_not_available":{"type":"string","description":"When to send the campaign if the user's best time is not available.","uniqueKey":"oneOf.0.scheduling_details.bts_details.if_user_bts_is_not_available","typeLabel":"string"},"if_user_bts_outside_time_window":{"type":"string","description":"When to send the campaign if the user's best time is outside the time window.","uniqueKey":"oneOf.0.scheduling_details.bts_details.if_user_bts_outside_time_window","typeLabel":"string"},"window_end_time":{"type":"string","description":"The window end time.","example":"6:43 am","uniqueKey":"oneOf.0.scheduling_details.bts_details.window_end_time","typeLabel":"string"}},"uniqueKey":"oneOf.0.scheduling_details.bts_details","typeLabel":"object"},"user_timezone_details":{"type":"object","description":"Configuration for sending in the user's timezone.\n\nFor the field schema and required-when-`SEND_IN_USER_TIMEZONE` rule, refer to [User timezone](/api/campaigns/audience-scheduling-delivery-reference#user-timezone).\n","properties":{"send_in_user_timezone":{"type":"boolean","description":"Whether to send the campaign on a specific date and time within the user's timezone.","uniqueKey":"oneOf.0.scheduling_details.user_timezone_details.send_in_user_timezone","typeLabel":"boolean"},"send_if_user_timezone_has_passed":{"type":"boolean","description":"Whether to send the campaign if the user's timezone has passed.","uniqueKey":"oneOf.0.scheduling_details.user_timezone_details.send_if_user_timezone_has_passed","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.scheduling_details.user_timezone_details","typeLabel":"object"},"geo_fence_timelimit":{"type":"object","description":"Defines the delivery time window for location-triggered campaigns. When configured, notifications are delivered only within the specified schedule.\n\n**Applicable for:** `LOCATION_TRIGGERED` campaigns.\n","properties":{"notification_schedule":{"type":"string","enum":["ALWAYS","LIMITED_TIME"],"description":"Controls when delivery is permitted. Set to `ALWAYS` to allow delivery at any time, or `LIMITED_TIME` to restrict delivery to the configured time bounds.","uniqueKey":"oneOf.0.scheduling_details.geo_fence_timelimit.notification_schedule","typeLabel":"enum\u003cstring>"},"timebounds":{"type":"array","description":"One or more start and end time windows within which delivery is permitted.\n\n**Required** when `notification_schedule` is `LIMITED_TIME`.\n","items":{"type":"object","properties":{"start_time":{"type":"string","format":"date-time","description":"Start of the delivery window in ISO 8601 format.","example":"2027-06-19T11:02:00","uniqueKey":"oneOf.0.scheduling_details.geo_fence_timelimit.timebounds.items.[INDEX].start_time","typeLabel":"string\u003cdate-time>"},"end_time":{"type":"string","format":"date-time","description":"End of the delivery window in ISO 8601 format.","example":"2029-06-20T13:55:00","uniqueKey":"oneOf.0.scheduling_details.geo_fence_timelimit.timebounds.items.[INDEX].end_time","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"oneOf.0.scheduling_details.geo_fence_timelimit.timebounds.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.scheduling_details.geo_fence_timelimit.timebounds","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.scheduling_details.geo_fence_timelimit","typeLabel":"object"}},"uniqueKey":"oneOf.0.scheduling_details","typeLabel":"object"},"delivery_controls":{"type":"object","description":"Controls for Push campaign delivery behavior.\n\nFor per-delivery-type runnable examples (throttle, event-triggered, device-triggered, location-triggered, queuing), refer to [Push delivery controls](/api/campaigns/audience-scheduling-delivery-reference#push-delivery-controls).\n","properties":{"bypass_dnd":{"type":"boolean","description":"Whether to bypass Do Not Disturb settings.\n\nRequired for event-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.bypass_dnd","typeLabel":"boolean"},"campaign_throttle_rpm":{"type":"integer","description":"The campaign throttle in requests per minute.\n\nNot applicable for device-triggered, location-triggered, and event-triggered campaigns.\n","example":50000,"uniqueKey":"oneOf.0.delivery_controls.campaign_throttle_rpm","typeLabel":"integer"},"count_for_frequency_capping":{"type":"boolean","description":"Whether to count this campaign for frequency capping.","uniqueKey":"oneOf.0.delivery_controls.count_for_frequency_capping","typeLabel":"boolean"},"ignore_frequency_capping":{"type":"boolean","description":"Whether to ignore frequency capping for this campaign.","uniqueKey":"oneOf.0.delivery_controls.ignore_frequency_capping","typeLabel":"boolean"},"minimum_delay_between_two_notification_in_hour":{"type":"integer","description":"Minimum delay between two notifications in hours.\n\nApplies to event-triggered and device-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.minimum_delay_between_two_notification_in_hour","typeLabel":"integer"},"max_time_to_show_message_of_same_camapign":{"type":"string","description":"Maximum duration (in hours) that a message from this campaign will be displayed to a user.\n\nApplicable for device-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.max_time_to_show_message_of_same_camapign","typeLabel":"string"},"expiry_time_of_sync_data_in_hour":{"type":"string","description":"Duration (in hours) after which synced campaign data will expire if trigger condition is not met.\n\nApplicable for device-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.expiry_time_of_sync_data_in_hour","typeLabel":"string"},"send_message_in_offline_mode":{"type":"boolean","description":"Whether to store and deliver the message when the device is offline.\n\nApplicable for device-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.send_message_in_offline_mode","typeLabel":"boolean"},"send_limit_value":{"type":"string","description":"Maximum number of times a user can receive this campaign within the specified time granularity.\n\nApplicable for location-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.send_limit_value","typeLabel":"string"},"send_limit_granularity_in_hours":{"type":"string","description":"Time window (in hours) during which the send_limit_value is enforced.\n\nApplicable for location-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.send_limit_granularity_in_hours","typeLabel":"string"},"ignore_global_minimum_delay":{"type":"boolean","description":"Whether to bypass the global minimum delay setting configured at the workspace level.\n\nWhen `true`, this campaign ignores the workspace-wide minimum interval between push notifications\nand can be delivered to a user regardless of how recently they received another push. Use this\nfor time-sensitive campaigns (for example, transactional or alert-style messages) where\nrespecting the global delay would reduce delivery timeliness.\n\nApplies to event-triggered campaigns.\n","uniqueKey":"oneOf.0.delivery_controls.ignore_global_minimum_delay","typeLabel":"boolean"},"queuing_enabled":{"type":"boolean","description":"Enables message queuing for this campaign. When set to `true`, messages that are temporarily blocked by DND, frequency capping, or minimum delay restrictions are held in a queue and delivered as soon as the restriction clears, rather than being dropped.\n\n**Supported delivery types:** `ONE_TIME`, `PERIODIC`, `EVENT_TRIGGERED`, `BUSINESS_EVENT_TRIGGERED`. Not applicable to `DEVICE_TRIGGERED` or `LOCATION_TRIGGERED` campaigns.\n\n**DND interaction:**\n- When `bypass_dnd` is `false` (DND respected): messages blocked during a DND window are queued and delivered once the window passes.\n- When `bypass_dnd` is `true` (DND ignored): queuing applies to frequency capping and minimum delay blocks only.\n\n**Auto-disabled:** When both `ignore_frequency_capping` and `minimum_delay_between_two_notification_in_hour` are configured to bypass all delivery restrictions, queuing is automatically disabled.\n\n**Queue limits:** Up to 10,000,000 messages for `ONE_TIME`, `PERIODIC`, and `BUSINESS_EVENT_TRIGGERED` campaigns; up to 1,000,000 for `EVENT_TRIGGERED` campaigns.\n\n**Delivery order:** Queued messages are delivered in first-in, first-out (FIFO) order.\n","uniqueKey":"oneOf.0.delivery_controls.queuing_enabled","typeLabel":"boolean"},"queue_duration":{"type":"integer","minimum":0,"maximum":48,"description":"The duration in hours during which a queued message will be retried for delivery. Accepted range: `1`–`48` hours. Set to `0` when `queuing_enabled` is `false`.\n\nIf a user does not become eligible for delivery within the configured window, the message is dropped and the outcome is recorded in campaign analytics.\n\nFor active `PERIODIC` and triggered campaigns, changes to this value apply only to messages queued after the update. Messages already in the queue retain the original duration.\n","uniqueKey":"oneOf.0.delivery_controls.queue_duration","typeLabel":"integer"},"limit_send_config":{"type":"object","description":"Configuration for limiting how many times a user can receive this campaign within a specified rolling time window. When enabled, MoEngage drops deliveries to users who have already reached `max_count` within the window and records the outcome in campaign analytics.\nApplies to `PERIODIC` and `EVENT_TRIGGERED` campaigns. Not applicable to other delivery types.\n","properties":{"enabled":{"type":"boolean","description":"Whether the send limit is enforced for this campaign. When `false`, `max_count`, `window_value`, and `window_unit` are ignored.\n","example":true,"isRequired":true,"uniqueKey":"oneOf.0.delivery_controls.limit_send_config.enabled","typeLabel":"boolean"},"max_count":{"type":"integer","minimum":1,"description":"The maximum number of times a user can receive this campaign within the window defined by `window_value` and `window_unit`.\n","example":1,"uniqueKey":"oneOf.0.delivery_controls.limit_send_config.max_count","typeLabel":"integer"},"window_value":{"type":"integer","minimum":1,"description":"The size of the rolling time window during which `max_count` is enforced. Combined with `window_unit` — for example, `window_value: 1` with `window_unit: DAYS` enforces the limit across a 24-hour rolling window. The maximum frequency window you can configure is **1 year**, which means, up to **12 months**, **52 weeks**, or **365 days**, depending on the unit you choose.\n","example":1,"uniqueKey":"oneOf.0.delivery_controls.limit_send_config.window_value","typeLabel":"integer"},"window_unit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","YEAR"],"description":"The unit of time for `window_value`. `HOURS` is applicable only to event triggered campaigns.\n","example":"DAYS","uniqueKey":"oneOf.0.delivery_controls.limit_send_config.window_unit","typeLabel":"enum\u003cstring>"}},"required":["enabled"],"uniqueKey":"oneOf.0.delivery_controls.limit_send_config","typeLabel":"object"}},"uniqueKey":"oneOf.0.delivery_controls","typeLabel":"object"},"advanced":{"type":"object","description":"Advanced Push delivery settings, including notification expiration and per-platform priority.\n\nFor runnable iOS APNS priority and Android priority examples, refer to [Advanced Push settings](/api/campaigns/audience-scheduling-delivery-reference#advanced-push-settings).\n","properties":{"expiration_settings":{"type":"object","properties":{"expire_notification_after_value":{"type":"integer","description":"The numeric value for the notification expiration time.","uniqueKey":"oneOf.0.advanced.expiration_settings.expire_notification_after_value","typeLabel":"integer"},"expire_notification_after_type":{"type":"string","enum":["HOUR","DAY"],"description":"The time unit for notification expiration.","uniqueKey":"oneOf.0.advanced.expiration_settings.expire_notification_after_type","typeLabel":"enum\u003cstring>"},"remove_from_inbox_after_value":{"type":"integer","description":"The numeric value for when to remove the message from the inbox.","uniqueKey":"oneOf.0.advanced.expiration_settings.remove_from_inbox_after_value","typeLabel":"integer"},"remove_from_inbox_after_type":{"type":"string","enum":["DAY"],"description":"The time unit for removing the message from the inbox.","uniqueKey":"oneOf.0.advanced.expiration_settings.remove_from_inbox_after_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.advanced.expiration_settings","typeLabel":"object"},"platform_level_priority":{"type":"object","properties":{"android_specific_priority":{"type":"object","properties":{"send_with_priority":{"type":"boolean","description":"Whether to send with priority.","uniqueKey":"oneOf.0.advanced.platform_level_priority.android_specific_priority.send_with_priority","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.advanced.platform_level_priority.android_specific_priority","typeLabel":"object"},"ios_specific_priority":{"type":"object","properties":{"apns_priority":{"type":"string","enum":["1","5","10"],"description":"The priority of notification delivery for APNS.","uniqueKey":"oneOf.0.advanced.platform_level_priority.ios_specific_priority.apns_priority","typeLabel":"enum\u003cstring>"},"interruption_level":{"type":"string","enum":["PASSIVE","ACTIVE","TIME_SENSITIVE","CRITICAL"],"description":"The interruption level for iOS notifications.","uniqueKey":"oneOf.0.advanced.platform_level_priority.ios_specific_priority.interruption_level","typeLabel":"enum\u003cstring>"},"relevance_score":{"type":"number","enum":[0,0.5,1],"description":"The relevance score for iOS notifications.","uniqueKey":"oneOf.0.advanced.platform_level_priority.ios_specific_priority.relevance_score","typeLabel":"enum\u003cnumber>"}},"uniqueKey":"oneOf.0.advanced.platform_level_priority.ios_specific_priority","typeLabel":"object"}},"uniqueKey":"oneOf.0.advanced.platform_level_priority","typeLabel":"object"}},"uniqueKey":"oneOf.0.advanced","typeLabel":"object"},"conversion_goal_details":{"type":"object","description":"Configuration for tracking campaign conversion goals.\n\nFor runnable single-goal and multi-goal examples, refer to [Conversion goal tracking](/api/campaigns/audience-scheduling-delivery-reference#conversion-goal-tracking).\n","properties":{"attribution_window_in_hours":{"type":"integer","description":"The attribution window in hours.","example":36,"uniqueKey":"oneOf.0.conversion_goal_details.attribution_window_in_hours","typeLabel":"integer"},"goals":{"type":"array","items":{"type":"object","description":"A single conversion goal configuration.","properties":{"goal_name":{"type":"string","description":"The name of the goal.","example":"Goal 1","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_name","typeLabel":"string"},"goal_event_name":{"type":"string","description":"The event name associated with this goal.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_name","typeLabel":"string"},"goal_event_attribute":{"type":"object","description":"Attributes associated with the conversion goal event.","properties":{"name":{"type":"string","description":"The name of the goal event attribute.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.name","typeLabel":"string"},"condition":{"type":"string","description":"The condition used while creating the goal (e.g., \"is\", \"contains\", \"between\").","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.condition","typeLabel":"string"},"data_type":{"type":"string","enum":["STRING","DOUBLE","BOOL","NUMBER","GEOPOINT","DATETIME","ARRAY_DOUBLE","ARRAY_STRING","OBJECT","ARRAY_OBJECT"],"description":"The data type of the attribute.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.data_type","typeLabel":"enum\u003cstring>"},"value":{"type":"string","description":"The value of the goal event attribute.\nSupported data types: STRING, DOUBLE, BOOL, NUMBER, GEOPOINT, DATETIME, ARRAY_DOUBLE, ARRAY_STRING.\n","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.value","typeLabel":"string"},"value1":{"type":"string","description":"A secondary value, used for conditions like 'between'.\nSupported data types: STRING, DOUBLE, BOOL, NUMBER, GEOPOINT, DATETIME, ARRAY_DOUBLE, ARRAY_STRING.\n","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.value1","typeLabel":"string"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.negate","typeLabel":"boolean"},"value_type":{"type":"string","description":"The type of value being filtered.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.value_type","typeLabel":"string"},"array_filter_type":{"type":"string","description":"The logical filter type for array attributes.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.array_filter_type","typeLabel":"string"},"filters":{"type":"array","items":{"type":"object","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.filters.items.[INDEX]","typeLabel":"object"},"description":"A list of sub-filters used when data_type is OBJECT or ARRAY_OBJECT.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.filters","typeLabel":"object[]"},"is_case_sensitive":{"type":"boolean","description":"Whether the goal event attribute is case-sensitive.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.is_case_sensitive","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].goal_event_attribute","typeLabel":"object"},"is_primary_goal":{"type":"boolean","description":"Whether this is the primary goal.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].is_primary_goal","typeLabel":"boolean"},"revenue_attribute":{"type":"string","description":"The revenue attribute to track.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].revenue_attribute","typeLabel":"string"},"revenue_currency":{"type":"string","description":"The currency for revenue tracking.","uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX].revenue_currency","typeLabel":"string"}},"uniqueKey":"oneOf.0.conversion_goal_details.goals.items.[INDEX]","typeLabel":"object"},"description":"List of conversion goals to track.","uniqueKey":"oneOf.0.conversion_goal_details.goals","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.conversion_goal_details","typeLabel":"object"},"control_group_details":{"type":"object","description":"Configuration for control groups.\n\nFor runnable campaign-control-group and global-control-group examples, refer to [Control groups](/api/campaigns/audience-scheduling-delivery-reference#control-groups).\n","properties":{"is_campaign_control_group_enabled":{"type":"boolean","description":"Whether the campaign control group is enabled.","uniqueKey":"oneOf.0.control_group_details.is_campaign_control_group_enabled","typeLabel":"boolean"},"campaign_control_group_percentage":{"type":"integer","minimum":0,"maximum":100,"description":"The percentage of users added to the exclusion list.\n\n**Required** if is_campaign_control_group_enabled is true.\n","uniqueKey":"oneOf.0.control_group_details.campaign_control_group_percentage","typeLabel":"integer"},"is_global_control_group_enabled":{"type":"boolean","description":"Whether the global control group is enabled.\n","uniqueKey":"oneOf.0.control_group_details.is_global_control_group_enabled","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.control_group_details","typeLabel":"object"},"utm_params":{"type":"object","description":"UTM parameters for tracking campaign performance. The five standard keys (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`) are explicitly defined.\n\n**Custom UTM parameters:** Up to 5 additional custom parameters can be passed as separate keys directly inside the `utm_params` object. Custom keys accept arbitrary names — the `utm_` prefix is a convention, not a requirement (for example, `utm_cust` or `campaign_source` are both accepted).\n\nFor runnable examples, refer to [UTM parameters](/api/campaigns/audience-scheduling-delivery-reference#utm-parameters).\n","properties":{"utm_source":{"type":"string","description":"The source of the traffic (for example, YouTube, Instagram, Google).\n\n**Required** when using UTM parameters.\n","example":"{{utm_source}}","uniqueKey":"oneOf.0.utm_params.utm_source","typeLabel":"string"},"utm_medium":{"type":"string","description":"The channel type (for example, Push, SMS, Email).\n\n**Required** when using UTM parameters.\n","example":"{{utm_medium}}","uniqueKey":"oneOf.0.utm_params.utm_medium","typeLabel":"string"},"utm_campaign":{"type":"string","description":"The name of the campaign (for example, Newyear, Bigbillionday).","example":"{{utm_campaign}}","uniqueKey":"oneOf.0.utm_params.utm_campaign","typeLabel":"string"},"utm_term":{"type":"string","description":"Search terms for paid traffic (for example, Mobile+sale).","uniqueKey":"oneOf.0.utm_params.utm_term","typeLabel":"string"},"utm_content":{"type":"string","description":"The content element that differentiates links (for example, banner, video).","uniqueKey":"oneOf.0.utm_params.utm_content","typeLabel":"string"},"utm_custom":{"type":"string","description":"A single custom UTM parameter value. For multiple custom parameters, pass them as\nseparate top-level keys inside the `utm_params` object using arbitrary `utm_`-prefixed\nnames (for example, `utm_cust`, `utm_c1ust`, `utm_c2ust`). A maximum of 5 custom\nparameters is supported in total.\n","uniqueKey":"oneOf.0.utm_params.utm_custom","typeLabel":"string"}},"additionalProperties":{"type":"string","description":"Arbitrary custom UTM parameters with `utm_`-prefixed key names (for example, `utm_cust`,\n`utm_c1ust`). Up to 5 custom parameters are supported in total across all custom keys.\n","uniqueKey":"oneOf.0.utm_params.additionalProperties","typeLabel":"string"},"uniqueKey":"oneOf.0.utm_params","typeLabel":"object"},"campaign_audience_limit":{"type":"object","description":"Configuration for capping the number of users a campaign can reach (max-send).\n\nCampaign Audience Limit (also called max-send) caps how many users a single campaign can reach. Use it to control reach on high-volume campaigns and protect users from over-messaging. The cap can apply across the campaign's full lifetime (`frequency: TOTAL`) or per send instance (`frequency: INSTANCE`).\n\nFor runnable `TOTAL` (lifetime cap), `INSTANCE` (per-send cap, Periodic Push only), and disabled-cap examples, refer to [Campaign audience cap](/api/campaigns/audience-scheduling-delivery-reference#campaign-audience-cap).\n\n**Supported channels:** Email, Push.\n\n**Supported delivery types:**\n- All delivery types support `frequency: TOTAL` (lifetime cap).\n- `frequency: INSTANCE` (per-send cap) is supported only for **Periodic Push** campaigns.\n- `campaign_audience_limit` is not supported for `BROADCAST_LIVE_ACTIVITY`.\n\n**Flag-gated feature:** This feature is not enabled by default for any workspace and requires\nexplicit activation by your MoEngage account team. If you include `campaign_audience_limit` in\na request on a workspace where the flag has not been enabled, the API returns a `400` with the\nfollowing error body:\n\n```json\n{\n \"error\": {\n \"code\": \"VALIDATION_FAILED\",\n \"message\": \"Campaign Audience Limit feature is not enabled for this db\",\n \"target\": \"campaign_audience_limit\",\n \"details\": [\n {\n \"target\": \"campaign_audience_limit\",\n \"message\": \"Campaign Audience Limit feature is not enabled for this db\"\n }\n ]\n },\n \"response_id\": \"{{response_id}}\"\n}\n```\n\nWhen `is_campaign_audience_limit_enabled` is `true`, the fields `metric`, `frequency`, and\n`limit` are all required. When set to `false`, those three fields must not be provided.\n\nFor `ONE_TIME` campaigns, only `limit` and `is_campaign_audience_limit_enabled` are supported. Do not pass `metric` or `frequency`, they are only valid for `PERIODIC` and `EVENT_TRIGGERED` campaigns. \nPassing them for a ONE_TIME campaign causes the validate API to fail. \n","properties":{"is_campaign_audience_limit_enabled":{"type":"boolean","description":"Whether the campaign audience limit is active. Set to `true` to enforce the cap; `false` to disable.\n\nWhen `true`, `metric`, `frequency`, and `limit` are all required.\nWhen `false`, `metric`, `frequency`, and `limit` must not be provided.\n","uniqueKey":"oneOf.0.campaign_audience_limit.is_campaign_audience_limit_enabled","typeLabel":"boolean"},"metric":{"type":"string","description":"The type of send event counted toward the limit. Must be uppercase.\n\n**Required** when `is_campaign_audience_limit_enabled` is `true`.\n","enum":["SENT"],"example":"SENT","uniqueKey":"oneOf.0.campaign_audience_limit.metric","typeLabel":"enum\u003cstring>"},"frequency":{"type":"string","description":"The window over which the limit is applied. Must be uppercase.\n\n- `TOTAL` - applies the cap across the full lifetime of the campaign. Supported for all delivery types on both Email and Push.\n- `INSTANCE` - applies the cap per campaign instance (for example, per periodic send). **Valid only for Push `PERIODIC` campaigns.** For all other delivery types, use `TOTAL`.\n\n**Required** when `is_campaign_audience_limit_enabled` is `true`.\n","enum":["TOTAL","INSTANCE"],"example":"TOTAL","uniqueKey":"oneOf.0.campaign_audience_limit.frequency","typeLabel":"enum\u003cstring>"},"limit":{"type":"integer","minimum":1,"maximum":9999999999,"description":"The maximum number of users who can receive this campaign (or per instance, when\n`frequency` is `INSTANCE`). Must be between 1 and 9,999,999,999.\n\n**Required** when `is_campaign_audience_limit_enabled` is `true`.\n","example":100000,"uniqueKey":"oneOf.0.campaign_audience_limit.limit","typeLabel":"integer"}},"uniqueKey":"oneOf.0.campaign_audience_limit","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"Push Campaign · object"},{"type":"object","title":"Email Campaign","description":"Request body for creating an Email campaign draft via `POST /v5/campaigns`.\n\nRequired fields are `channel`, `campaign_delivery_type`, and `created_by`. `connector` is required before the campaign can be published or sent for testing, but can be added later via `PATCH` (progressive creation). `campaign_content` can be added when the message content is ready.\n\n\nFor the component-level schemas with conditional rules:\n- [Campaign content reference](/api/campaigns/campaign-content-reference) — `basic_details`, `campaign_content` (`html_content` and `custom_template_id`), `variation_details`, and `connector`.\n- [Audience and delivery reference](/api/campaigns/audience-scheduling-delivery-reference) — `trigger_condition`, `segmentation_details`, `scheduling_details`, `delivery_controls`, `conversion_goal_details`, `control_group_details`, `utm_params`, and `campaign_audience_limit`.\n","required":["channel","campaign_delivery_type","created_by"],"properties":{"channel":{"type":"string","enum":["EMAIL"],"description":"The campaign channel. One of `PUSH` or `EMAIL`.","isRequired":true,"uniqueKey":"oneOf.1.channel","typeLabel":"enum\u003cstring>"},"campaign_delivery_type":{"type":"string","enum":["ONE_TIME","PERIODIC","EVENT_TRIGGERED","BUSINESS_EVENT_TRIGGERED","API_TRIGGERED"],"description":"The delivery type of the campaign.\n\n**Note:** `API_TRIGGERED` creates a reusable campaign shell for the [Messaging API](/api/messaging/messaging-api-overview). The shell defines the content structure and the campaign settings, and each trigger request specifies the recipient and the values for that send. It supports `campaign_content.locales`, `campaign_content.variation_details`, `control_group_details`, `conversion_goal_details`, and `utm_params`. It does not accept `segmentation_details`, `scheduling_details`, `trigger_condition`, or `campaign_audience_limit`, and within `delivery_controls` only `ignore_frequency_capping` and `count_for_frequency_capping` are supported. Refer to [API-triggered campaigns](/api/campaigns/audience-scheduling-delivery-reference#api-triggered-campaigns) for the full field list.\n\nFor full request payloads per delivery type, see the code examples on this page.\n","isRequired":true,"uniqueKey":"oneOf.1.campaign_delivery_type","typeLabel":"enum\u003cstring>"},"created_by":{"type":"string","format":"email","description":"The email ID of the user creating this campaign.","example":"[email protected]","isRequired":true,"uniqueKey":"oneOf.1.created_by","typeLabel":"string\u003cemail>"},"request_id":{"type":"string","description":"A unique identifier for this campaign creation request.\n\n**Important:** After successful campaign creation, do not reuse this request_id for the next 1 day. If campaign creation fails, you can immediately retry with the same request_id.\n","example":"{{request_id}}","uniqueKey":"oneOf.1.request_id","typeLabel":"string"},"basic_details":{"type":"object","description":"Identifying metadata for the Email campaign, including name, team, tags, and subscription category.\n\n**Conditional requirements:** `name`, `content_type`, `user_attribute_identifier`, and `subscription_category` are strictly required only when using the `/v5/campaigns/test` endpoint in **inline mode**. They are not required at campaign creation time (V5 supports progressive creation, where components are added later via PATCH) and are not needed in **draft mode** tests, where content comes from the saved draft.\n","properties":{"name":{"type":"string","description":"Any string name for the test or campaign.","example":"Summer Sale Email","uniqueKey":"oneOf.1.basic_details.name","typeLabel":"string"},"business_event":{"type":"string","description":"The business event to be mapped to the campaign.","example":"user_signup","uniqueKey":"oneOf.1.basic_details.business_event","typeLabel":"string"},"content_type":{"type":"string","enum":["PROMOTIONAL","TRANSACTIONAL"],"description":"The type of content in the campaign. \"PROMOTIONAL\" or \"TRANSACTIONAL\".","uniqueKey":"oneOf.1.basic_details.content_type","typeLabel":"enum\u003cstring>"},"subscription_category":{"type":"string","description":"The subscription category for promotional email campaigns. **Must match a valid category configured in your workspace.**\n\n**Required** for PROMOTIONAL email campaigns and inline tests.\n","example":"marketing","uniqueKey":"oneOf.1.basic_details.subscription_category","typeLabel":"string"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.basic_details.tags.items.[INDEX]","typeLabel":"string"},"description":"Tags that provide context about the campaign's nature or theme.","example":["activation","summer_sale"],"uniqueKey":"oneOf.1.basic_details.tags","typeLabel":"string[]"},"team":{"type":"string","description":"The name of the team collaborating on this campaign.","example":"marketing_team","uniqueKey":"oneOf.1.basic_details.team","typeLabel":"string"},"send_only_double_opt_in_users":{"type":"boolean","description":"Restricts the campaign to users who have double-opted in. Applies only to `PROMOTIONAL` campaigns.\n\nFor the validation errors returned when this field is misused, refer to the `400` response examples on the Create, Update, and Validate Campaign endpoints.\n","example":true,"uniqueKey":"oneOf.1.basic_details.send_only_double_opt_in_users","typeLabel":"boolean"},"deduplication_attribute":{"type":"string","description":"Brand-level deduplication. A user matching this attribute receives at most one send across campaigns that share the same value.\n\n- Pass `\"\"` (empty string) for single-brand use (no dedup).\n- Pass a user attribute name for multi-brand dedup. Use the backend attribute name (for example, `u_em`), not the readable/display name (for example, `Email (Standard)`) — the same requirement as the segmentation component elsewhere in this API.\n- `deduplication_attribute` is not supported for `API_TRIGGERED` campaigns. Passing this field on an API-triggered campaign returns a 400 validation error.\n\nFor the validation errors returned when this field is misused, refer to the `400` response examples on the Create, Update, and Validate Campaign endpoints.\n","example":"u_em","uniqueKey":"oneOf.1.basic_details.deduplication_attribute","typeLabel":"string"},"user_attribute_identifier":{"type":"string","default":"Email (Standard)","description":"The user attribute that stores the recipient email address. Use \"Email (Standard)\" for email channels.\n","example":"Email (Standard)","uniqueKey":"oneOf.1.basic_details.user_attribute_identifier","typeLabel":"string"}},"uniqueKey":"oneOf.1.basic_details","typeLabel":"object"},"trigger_condition":{"type":"object","description":"Trigger condition details for Email event-triggered campaigns.\n\n**Required** for EVENT_TRIGGERED campaigns.\n\nFor per-delay-type runnable payloads (`ASAP`, `DELAY` with `AFTER`/`BEFORE`), filter primitives, and primary/secondary filter combinations, refer to [Trigger conditions](/api/campaigns/audience-scheduling-delivery-reference#trigger-conditions).\n","properties":{"included_filters":{"type":"object","description":"A group of filters combined with a logical operator.\n\nFor detailed segmentation payload and supported fields, refer to [Create Custom Segment](/api/filter-segments/create-filter-segment).\n","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.1.trigger_condition.included_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.1.trigger_condition.included_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.1.trigger_condition.included_filters","typeLabel":"object"},"secondary_included_filters":{"type":"object","description":"Additional filters that must also be satisfied for the Email trigger to fire. For runnable examples, refer to [Primary and secondary trigger filters](/api/campaigns/audience-scheduling-delivery-reference#primary-and-secondary-trigger-filters).","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.1.trigger_condition.secondary_included_filters","typeLabel":"object"},"trigger_delay_type":{"type":"string","enum":["DELAY","ASAP"],"description":"The type of triggered delay.\n\nWhen set to DELAY, the following fields are mandatory:\n- trigger_delay_value\n- trigger_delay_granularity\n- trigger_relation\n","uniqueKey":"oneOf.1.trigger_condition.trigger_delay_type","typeLabel":"enum\u003cstring>"},"trigger_delay_value":{"type":"integer","minimum":0,"description":"The numeric value of the triggered delay.","uniqueKey":"oneOf.1.trigger_condition.trigger_delay_value","typeLabel":"integer"},"trigger_delay_granularity":{"type":"string","enum":["MINUTES","HOURS","DAYS"],"description":"The time unit for the trigger delay.","uniqueKey":"oneOf.1.trigger_condition.trigger_delay_granularity","typeLabel":"enum\u003cstring>"},"trigger_relation":{"type":"string","enum":["BEFORE","AFTER"],"description":"The trigger relation with delay.\n\n**Required** when trigger_delay_type is DELAY.\n","uniqueKey":"oneOf.1.trigger_condition.trigger_relation","typeLabel":"enum\u003cstring>"},"trigger_attr":{"type":"string","description":"The attribute value of the trigger. Pass the string `\"If Action\"` for event-triggered campaigns.","uniqueKey":"oneOf.1.trigger_condition.trigger_attr","typeLabel":"string"}},"uniqueKey":"oneOf.1.trigger_condition","typeLabel":"object"},"connector":{"type":"object","description":"Email connector configuration for sending email campaigns. Required for inline Email test requests and before an Email campaign can be published or sent for testing. Not required at draft create time — it can be added later via `PATCH`. For runnable examples, refer to [Email delivery connector](/api/campaigns/campaign-content-reference#email-delivery-connector).\n","required":["connector_type","connector_name"],"properties":{"connector_type":{"type":"string","enum":["SENDGRID","AMAZON_SES","SPARKPOST","MANDRILL","CUSTOM_SMTP","CUSTOM_API","NETCORE"],"description":"The email service provider for this campaign. Must match a connector configured in your MoEngage workspace. Accepted values: `SENDGRID`, `AMAZON_SES`, `SPARKPOST`, `MANDRILL`, `CUSTOM_SMTP`, `CUSTOM_API`, `NETCORE`. To find which connectors are active, go to **Settings** > **Email** > **Connectors** in the MoEngage dashboard.\n","isRequired":true,"uniqueKey":"oneOf.1.connector.connector_type","typeLabel":"enum\u003cstring>"},"connector_name":{"type":"string","description":"The name of the connector configuration as configured in your MoEngage workspace.","isRequired":true,"uniqueKey":"oneOf.1.connector.connector_name","typeLabel":"string"}},"uniqueKey":"oneOf.1.connector","typeLabel":"object"},"campaign_content":{"type":"object","description":"Email content, locales, and A/B variations.\n\nFor full `POST /v5/campaigns` request examples that include `campaign_content`, refer to `campaign_delivery_type` on `EmailCampaignCreateV5Request`, `VariationDetails`, and the Create Campaign Draft code samples.\n\nFor Email content variants, including `html_content` versus `custom_template_id`, CC/BCC, attachments, and editor selection (`Froala Editor` versus `Ace Editor`), refer to [Email content](/api/campaigns/campaign-content-reference#email-content).\n","properties":{"locales":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.campaign_content.locales.items.[INDEX]","typeLabel":"string"},"description":"Additional locale names for multi-language campaigns. List only the non-default locales here (for example, `\"en-US\"`, `\"es-ES\"`). The `\"default\"` locale is always implicitly present and must not be included in this array.\n","example":["en-US","es-ES"],"uniqueKey":"oneOf.1.campaign_content.locales","typeLabel":"string[]"},"variation_details":{"type":"object","description":"Configuration for A/B testing variations.\n\nFor runnable `MANUAL` (fixed split) and `SHERPA` (auto-optimized) examples, refer to [A/B test variations](/api/campaigns/campaign-content-reference#a%2Fb-test-variations).\n","properties":{"distribution_type":{"type":"string","enum":["SHERPA","MANUAL"],"description":"The traffic distribution method for A/B test variations.\n\n- `MANUAL` - you specify a fixed percentage split across variations.\n- `SHERPA` - MoEngage's AI-powered optimizer automatically shifts traffic toward the best-performing variation during the campaign run.\n","uniqueKey":"oneOf.1.campaign_content.variation_details.distribution_type","typeLabel":"enum\u003cstring>"},"no_of_variations":{"type":"integer","minimum":1,"description":"The number of A/B test variations.","example":2,"uniqueKey":"oneOf.1.campaign_content.variation_details.no_of_variations","typeLabel":"integer"},"manual_distribution_percentage":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"oneOf.1.campaign_content.variation_details.manual_distribution_percentage.additionalProperties","typeLabel":"integer"},"description":"Fixed percentage of audience assigned to each variation. \n**Note:** Variation keys must follow the `variation_N` naming format (e.g. `variation_1`, `variation_2`). Keys with any other format like `var_1`, `1`, `2` will be rejected with a validation error.\n\n**Required** when `distribution_type` is `MANUAL`.\n","example":{"variation_1":50,"variation_2":50},"uniqueKey":"oneOf.1.campaign_content.variation_details.manual_distribution_percentage","typeLabel":"object"},"sherpa_campaign_duration":{"type":"integer","description":"Duration in hours over which MoEngage Sherpa collects performance data before declaring a winning variation.\n\n**Required** when `distribution_type` is `SHERPA`.\n","uniqueKey":"oneOf.1.campaign_content.variation_details.sherpa_campaign_duration","typeLabel":"integer"},"sherpa_distribution_metric":{"type":"string","enum":["OPEN_RATE","CLICK_RATE","BOTH"],"description":"The engagement metric Sherpa uses to evaluate and rank variations.\n\n**Required** when `distribution_type` is `SHERPA`.\n","uniqueKey":"oneOf.1.campaign_content.variation_details.sherpa_distribution_metric","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.1.campaign_content.variation_details","typeLabel":"object"},"content":{"type":"object","description":"The campaign message payload. Two shapes are accepted:\n\n- **Flat shape (no locales or variations):** Pass a flat `email` object directly under `content`.\n- **Locale-keyed and variation-keyed shape:** Key by locale name, then by variation name: `content[locale_name][variation_name] = { email: { ... } }`. The `\"default\"` locale key is always required and serves as the fallback. Additional locale keys must match values listed in `locales`.\n\nFor runnable payloads for both shapes, refer to [Content payload structure](/api/campaigns/campaign-content-reference#content-payload-structure).\n","properties":{"email":{"type":"object","description":"Email campaign content.","properties":{"subject":{"type":"string","description":"The subject line of the email.","example":"Exclusive Summer Sale - 50% Off!","uniqueKey":"oneOf.1.campaign_content.content.email.subject","typeLabel":"string"},"preview_text":{"type":"string","description":"The preview text shown in email clients.","example":"Don't miss out on our biggest sale of the season","uniqueKey":"oneOf.1.campaign_content.content.email.preview_text","typeLabel":"string"},"sender_name":{"type":"string","description":"The name of the sender that appears in the email.","example":"MoEngage Team","uniqueKey":"oneOf.1.campaign_content.content.email.sender_name","typeLabel":"string"},"from_address":{"type":"string","description":"The sender's email address.\n\nThis field accepts personalization tokens, for example `{{UserAttribute['custom_from_email']}}`, resolved per-recipient at send time. **Requires the `EMAIL_FROM_ADDRESS_PERS` flag enabled for the workspace.**\n\n```json\n{ \"from_address\": \"{{UserAttribute['custom_from_email']}}\" }\n```\n","example":"[email protected]","uniqueKey":"oneOf.1.campaign_content.content.email.from_address","typeLabel":"string"},"reply_to_address":{"type":"string","description":"The reply-to email address.\n\nThis field accepts personalization tokens, for example `{{UserAttribute['custom_reply_to']}}`, resolved per-recipient at send time. Works unconditionally — no flag required.\n\n```json\n{ \"reply_to_address\": \"{{UserAttribute['custom_reply_to']}}\" }\n```\n","example":"[email protected]","uniqueKey":"oneOf.1.campaign_content.content.email.reply_to_address","typeLabel":"string"},"cc_ids":{"type":"array","items":{"type":"string","format":"email","uniqueKey":"oneOf.1.campaign_content.content.email.cc_ids.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Email addresses to CC. For runnable examples, refer to [Email content variants](/api/campaigns/campaign-content-reference#email-content-variants).","uniqueKey":"oneOf.1.campaign_content.content.email.cc_ids","typeLabel":"string\u003cemail>[]"},"bcc_ids":{"type":"array","items":{"type":"string","format":"email","uniqueKey":"oneOf.1.campaign_content.content.email.bcc_ids.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Email addresses to BCC. For runnable examples, refer to [Email content variants](/api/campaigns/campaign-content-reference#email-content-variants).","uniqueKey":"oneOf.1.campaign_content.content.email.bcc_ids","typeLabel":"string\u003cemail>[]"},"html_content":{"type":"string","description":"The HTML content of the email.\n\n**Optional** if custom_template_id is provided.\n","example":"\u003c!DOCTYPE html>\u003chtml>\u003chead>\u003c/head>\u003cbody>\u003cp>Hello {{UserAttribute['First Name']}}\u003c/p>\u003c/body>\u003c/html>","uniqueKey":"oneOf.1.campaign_content.content.email.html_content","typeLabel":"string"},"email_editor":{"type":"string","enum":["Froala Editor","Ace Editor"],"description":"The HTML editor used for the email campaign.\n\n- **Required** if you want to create the campaign using the `Ace Editor`.\n- **Optional** if you want to use the default `Froala Editor`.\n","example":"Ace Editor","uniqueKey":"oneOf.1.campaign_content.content.email.email_editor","typeLabel":"enum\u003cstring>"},"custom_template_id":{"type":"string","description":"The ID of a custom email template.\n\n**Optional** if html_content is provided.\n\nWhen this field is provided, the following fields are not required:\n- subject\n- preview_text\n- sender_name\n","uniqueKey":"oneOf.1.campaign_content.content.email.custom_template_id","typeLabel":"string"},"custom_template_version":{"type":"integer","description":"The version of the custom template.","uniqueKey":"oneOf.1.campaign_content.content.email.custom_template_version","typeLabel":"integer"},"attachments":{"type":"array","items":{"type":"object","properties":{"file_type":{"type":"string","enum":["URL","PERSONALIZED_ATTACHMENT"],"uniqueKey":"oneOf.1.campaign_content.content.email.attachments.items.[INDEX].file_type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","uniqueKey":"oneOf.1.campaign_content.content.email.attachments.items.[INDEX].url","typeLabel":"string"},"s3_keys":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.campaign_content.content.email.attachments.items.[INDEX].s3_keys.items.[INDEX]","typeLabel":"string"},"description":"S3 object keys backing an attachment stored in a fixed, MoEngage-owned S3 bucket. This is complementary to `url` / `file_type` on the same attachment entry, not a replacement — `url` and `file_type` are still required regardless of whether `s3_keys` is also provided.\n\nNo workspace-level configuration (such as bucket allowlisting) is required or supported, since the bucket is not customer-owned.\n","example":["attachments/2026/06/invoice-001.pdf"],"uniqueKey":"oneOf.1.campaign_content.content.email.attachments.items.[INDEX].s3_keys","typeLabel":"string[]"}},"uniqueKey":"oneOf.1.campaign_content.content.email.attachments.items.[INDEX]","typeLabel":"object"},"description":"Attachments to include in the email.\n","uniqueKey":"oneOf.1.campaign_content.content.email.attachments","typeLabel":"object[]"},"gmail_annotations":{"type":"object","description":"Gmail Annotations shown in Gmail's Promotions tab. Two annotation types are supported: `deal_card` and `product_carousel`. These are mutually exclusive — include only one per campaign. Passing both `deal_card` and `product_carousel` returns a 400 validation error.\n\n**Note:** `gmail_annotations` is only supported when `content_type` is `PROMOTIONAL`. Using it with `TRANSACTIONAL` returns a `400` error.\n","required":["send_email_if_personalization_fails","sender_logo","sender_logo_type"],"properties":{"send_email_if_personalization_fails":{"type":"boolean","description":"Whether to send the email if personalization of any Gmail annotation field fails.\n\n**Required** when `gmail_annotations` is present.\n","example":true,"isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.send_email_if_personalization_fails","typeLabel":"boolean"},"sender_logo":{"type":"string","description":"The sender logo shown in the Gmail annotation.\n\nAccepts a valid HTTPS URL or a MoEngage personalization token.\n\n**Required** when `gmail_annotations` is present.\n","example":"https://example.com/logo.png","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.sender_logo","typeLabel":"string"},"sender_logo_type":{"type":"string","enum":["image_url","uploaded_image"],"description":"The source type of the sender logo.\n\n- `image_url`: `sender_logo` is treated as a publicly accessible image URL.\n- `uploaded_image`: `sender_logo` is treated as an uploaded image reference from the MoEngage asset manager.\n\n**Required** when `sender_logo` is provided.\n","example":"image_url","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.sender_logo_type","typeLabel":"enum\u003cstring>"},"deal_card":{"type":"object","description":"The Deal Card annotation.\n\n**Optional.** Use either `deal_card` or `product_carousel` — not both. Passing both `deal_card` and `product_carousel` returns a 400 validation error.\n","required":["description","discount_code","availability_starts","availability_ends"],"properties":{"description":{"type":"string","description":"Short deal description shown in the Gmail annotation.\n\n**Required** when `deal_card` is present.\n","example":"Get 20% off on all orders above $50","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.deal_card.description","typeLabel":"string"},"discount_code":{"type":"string","description":"Promo or discount code displayed with the deal.\n\n**Required** when `deal_card` is present.\n","example":"SAVE20","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.deal_card.discount_code","typeLabel":"string"},"availability_starts":{"type":"string","description":"ISO 8601 datetime indicating when the deal becomes active. Use the timezone of the promotion, not your server or API caller timezone. Ensure the timezone matches the promotion's local timezone so the deal displays the correct active and expiry times for your audience.\n\n**Accepted formats:**\n- UTC (`Z` suffix): `YYYY-MM-DDTHH:mm:ssZ` (for example, `2026-06-01T00:00:00Z`).\n- Positive offset: `YYYY-MM-DDTHH:mm:ss+HH:MM` (for example, `2026-06-01T00:00:00+05:30` for IST).\n- Negative offset: `YYYY-MM-DDTHH:mm:ss-HH:MM` (for example, `2026-06-01T00:00:00-07:00` for US Pacific PDT).\n\n**Common offsets:** IST `+05:30`, SGT `+08:00`, GST `+04:00`, CET `+01:00` or `+02:00` (DST), EST `-05:00`, EDT `-04:00`, PST `-08:00`, PDT `-07:00`, UTC `Z` or `+00:00`.\n\n**Required** when `deal_card` is present.\n","example":"2026-06-01T00:00:00Z","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.deal_card.availability_starts","typeLabel":"string"},"availability_ends":{"type":"string","description":"ISO 8601 datetime indicating when the deal expires. Same format as `availability_starts`.\n\nUse the timezone of the promotion, not your server or API caller timezone. Ensure the timezone matches the promotion's local timezone so the deal displays the correct active and expiry times for your audience.\n\nMust be at least 1 hour after `availability_starts`.\n\n**Required** when `deal_card` is present.\n","example":"2026-06-30T23:59:59Z","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.deal_card.availability_ends","typeLabel":"string"}},"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.deal_card","typeLabel":"object"},"product_carousel":{"type":"object","description":"The Product Carousel annotation.\n\n**Optional.** Use either `product_carousel` or `deal_card` — not both. Passing both `deal_card` and `product_carousel` returns a 400 validation error.\n","required":["type"],"properties":{"type":{"type":"string","enum":["MANUAL","PRODUCT_SET"],"description":"The source type for the product carousel.\n\n- `MANUAL`: Specify products directly in the request using `manual_data`.\n- `PRODUCT_SET`: Pull products dynamically from a MoEngage Catalog product set using `product_set_data`. Requires the Product Sets feature to be enabled for your workspace.\n\n**Required** when `product_carousel` is present.\n","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.type","typeLabel":"enum\u003cstring>"},"manual_data":{"type":"object","description":"Products specified directly in the request.\n\n**Required** when `product_carousel.type` is `MANUAL`.\n","required":["currency","products"],"properties":{"currency":{"type":"string","description":"ISO 4217 currency code applied to all products in the carousel.\n\n**Required** when `manual_data` is present.\n","example":"USD","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.currency","typeLabel":"string"},"products":{"type":"array","description":"List of products to display in the carousel.\n\n**Required** when `manual_data` is present. Minimum 2 products.\n","minItems":2,"items":{"type":"object","description":"A single product entry in a manual product carousel. All fields below are required for each product.","required":["id","headline","original_price","discount_value","discount_type","promo_url","product_image"],"properties":{"id":{"type":"string","description":"Unique product identifier.\n\n**Required** for each product.\n","example":"prod-001","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].id","typeLabel":"string"},"headline":{"type":"string","description":"Product name shown in the annotation.\n\n**Required** for each product.\n","example":"Wireless Headphones","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].headline","typeLabel":"string"},"original_price":{"type":"string","description":"Original price of the product as a numeric string.\n\n**Required** for each product.\n","example":"199.99","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].original_price","typeLabel":"string"},"discount_value":{"type":"string","description":"Discount amount as a numeric string. Interpreted as a percentage or absolute value depending on `discount_type`.\n\n**Required** for each product.\n","example":"30","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].discount_value","typeLabel":"string"},"discount_type":{"type":"string","enum":["PERCENT","VALUE"],"description":"How `discount_value` is interpreted.\n\n- `PERCENT`: `discount_value` is a percentage.\n- `VALUE`: `discount_value` is an absolute amount in `currency`.\n\n**Required** for each product.\n","example":"PERCENT","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].discount_type","typeLabel":"enum\u003cstring>"},"promo_url":{"type":"string","description":"Product landing page URL. Must be a valid HTTPS URL.\n\n**Required** for each product.\n","example":"https://example.com/products/prod-001","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].promo_url","typeLabel":"string"},"product_image":{"type":"string","description":"Product image URL. Must be a valid HTTPS URL. Cannot be empty.\n\n**Required** for each product.\n","example":"https://example.com/images/prod-001.png","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].product_image","typeLabel":"string"}},"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products","typeLabel":"object[]"}},"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.manual_data","typeLabel":"object"},"product_set_data":{"type":"object","description":"Reference to a MoEngage Catalog product set.\n\n**Required** when `product_carousel.type` is `PRODUCT_SET`.\n","required":["product_set","image_url","headline","promo_url","product_count"],"properties":{"product_set":{"type":"string","description":"Product set ID from MoEngage Catalog. Must be valid and exist in your workspace.\n\n**Required** when `product_set_data` is present.\n","example":"product_set_12345","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.product_set_data.product_set","typeLabel":"string"},"image_url":{"type":"string","description":"Fallback image URL if a product set image is unavailable.\n\n**Required** when `product_set_data` is present.\n","example":"https://example.com/images/fallback.png","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.product_set_data.image_url","typeLabel":"string"},"headline":{"type":"string","description":"Label shown for the product carousel.\n\n**Required** when `product_set_data` is present.\n","example":"Recommended For You","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.product_set_data.headline","typeLabel":"string"},"promo_url":{"type":"string","description":"Destination URL when the user clicks the annotation.\n\n**Required** when `product_set_data` is present.\n","example":"https://example.com/shop","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.product_set_data.promo_url","typeLabel":"string"},"product_count":{"type":"integer","description":"Number of products to display.\n\n**Required** when `product_set_data` is present. Minimum 2, maximum 9.\n","minimum":2,"maximum":9,"example":3,"isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.product_set_data.product_count","typeLabel":"integer"}},"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel.product_set_data","typeLabel":"object"}},"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations.product_carousel","typeLabel":"object"}},"uniqueKey":"oneOf.1.campaign_content.content.email.gmail_annotations","typeLabel":"object"},"link_branding_domain":{"type":"string","description":"Custom domain for wrapping tracked links, in place of the default MoEngage tracking domain. Configured per workspace under **Settings** > **Link Branding**.\n\n- If supplied, must match a domain already configured for the workspace.\n- Optional — a campaign is accepted without this field even when the workspace has a matching domain configured. Omitting it falls back to the default MoEngage tracking domain.\n- Passing an empty string (`\"\"`) is treated the same as omitting the field.\n- Supported for all delivery types including API_TRIGGERED.\n","example":"yourbrand.com","uniqueKey":"oneOf.1.campaign_content.content.email.link_branding_domain","typeLabel":"string"},"deep_link_domain":{"type":"string","description":"Custom domain for deep/branch links in the email, in place of the default deep link behavior. Configured per workspace under **Settings** > **Deep Links**.\n\n- If supplied, must match a domain already configured for the workspace.\n- Optional — a campaign is accepted without this field even when the workspace has a matching domain configured. Omitting it uses the default deep link behavior.\n- Can be set independently of `link_branding_domain`.\n- Supported for all delivery types including API_TRIGGERED.\n","example":"deeplink.yourbrand.com","uniqueKey":"oneOf.1.campaign_content.content.email.deep_link_domain","typeLabel":"string"}},"uniqueKey":"oneOf.1.campaign_content.content.email","typeLabel":"object"}},"additionalProperties":{"type":"object","description":"Variation-keyed content blocks for a single locale.","additionalProperties":{"type":"object","properties":{"email":{"type":"object","description":"Email campaign content.","properties":{"subject":{"type":"string","description":"The subject line of the email.","example":"Exclusive Summer Sale - 50% Off!","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.subject","typeLabel":"string"},"preview_text":{"type":"string","description":"The preview text shown in email clients.","example":"Don't miss out on our biggest sale of the season","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.preview_text","typeLabel":"string"},"sender_name":{"type":"string","description":"The name of the sender that appears in the email.","example":"MoEngage Team","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.sender_name","typeLabel":"string"},"from_address":{"type":"string","description":"The sender's email address.\n\nThis field accepts personalization tokens, for example `{{UserAttribute['custom_from_email']}}`, resolved per-recipient at send time. **Requires the `EMAIL_FROM_ADDRESS_PERS` flag enabled for the workspace.**\n\n```json\n{ \"from_address\": \"{{UserAttribute['custom_from_email']}}\" }\n```\n","example":"[email protected]","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.from_address","typeLabel":"string"},"reply_to_address":{"type":"string","description":"The reply-to email address.\n\nThis field accepts personalization tokens, for example `{{UserAttribute['custom_reply_to']}}`, resolved per-recipient at send time. Works unconditionally — no flag required.\n\n```json\n{ \"reply_to_address\": \"{{UserAttribute['custom_reply_to']}}\" }\n```\n","example":"[email protected]","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.reply_to_address","typeLabel":"string"},"cc_ids":{"type":"array","items":{"type":"string","format":"email","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.cc_ids.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Email addresses to CC. For runnable examples, refer to [Email content variants](/api/campaigns/campaign-content-reference#email-content-variants).","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.cc_ids","typeLabel":"string\u003cemail>[]"},"bcc_ids":{"type":"array","items":{"type":"string","format":"email","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.bcc_ids.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Email addresses to BCC. For runnable examples, refer to [Email content variants](/api/campaigns/campaign-content-reference#email-content-variants).","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.bcc_ids","typeLabel":"string\u003cemail>[]"},"html_content":{"type":"string","description":"The HTML content of the email.\n\n**Optional** if custom_template_id is provided.\n","example":"\u003c!DOCTYPE html>\u003chtml>\u003chead>\u003c/head>\u003cbody>\u003cp>Hello {{UserAttribute['First Name']}}\u003c/p>\u003c/body>\u003c/html>","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.html_content","typeLabel":"string"},"email_editor":{"type":"string","enum":["Froala Editor","Ace Editor"],"description":"The HTML editor used for the email campaign.\n\n- **Required** if you want to create the campaign using the `Ace Editor`.\n- **Optional** if you want to use the default `Froala Editor`.\n","example":"Ace Editor","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.email_editor","typeLabel":"enum\u003cstring>"},"custom_template_id":{"type":"string","description":"The ID of a custom email template.\n\n**Optional** if html_content is provided.\n\nWhen this field is provided, the following fields are not required:\n- subject\n- preview_text\n- sender_name\n","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.custom_template_id","typeLabel":"string"},"custom_template_version":{"type":"integer","description":"The version of the custom template.","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.custom_template_version","typeLabel":"integer"},"attachments":{"type":"array","items":{"type":"object","properties":{"file_type":{"type":"string","enum":["URL","PERSONALIZED_ATTACHMENT"],"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.attachments.items.[INDEX].file_type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.attachments.items.[INDEX].url","typeLabel":"string"},"s3_keys":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.attachments.items.[INDEX].s3_keys.items.[INDEX]","typeLabel":"string"},"description":"S3 object keys backing an attachment stored in a fixed, MoEngage-owned S3 bucket. This is complementary to `url` / `file_type` on the same attachment entry, not a replacement — `url` and `file_type` are still required regardless of whether `s3_keys` is also provided.\n\nNo workspace-level configuration (such as bucket allowlisting) is required or supported, since the bucket is not customer-owned.\n","example":["attachments/2026/06/invoice-001.pdf"],"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.attachments.items.[INDEX].s3_keys","typeLabel":"string[]"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.attachments.items.[INDEX]","typeLabel":"object"},"description":"Attachments to include in the email.\n","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.attachments","typeLabel":"object[]"},"gmail_annotations":{"type":"object","description":"Gmail Annotations shown in Gmail's Promotions tab. Two annotation types are supported: `deal_card` and `product_carousel`. These are mutually exclusive — include only one per campaign. Passing both `deal_card` and `product_carousel` returns a 400 validation error.\n\n**Note:** `gmail_annotations` is only supported when `content_type` is `PROMOTIONAL`. Using it with `TRANSACTIONAL` returns a `400` error.\n","required":["send_email_if_personalization_fails","sender_logo","sender_logo_type"],"properties":{"send_email_if_personalization_fails":{"type":"boolean","description":"Whether to send the email if personalization of any Gmail annotation field fails.\n\n**Required** when `gmail_annotations` is present.\n","example":true,"isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.send_email_if_personalization_fails","typeLabel":"boolean"},"sender_logo":{"type":"string","description":"The sender logo shown in the Gmail annotation.\n\nAccepts a valid HTTPS URL or a MoEngage personalization token.\n\n**Required** when `gmail_annotations` is present.\n","example":"https://example.com/logo.png","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.sender_logo","typeLabel":"string"},"sender_logo_type":{"type":"string","enum":["image_url","uploaded_image"],"description":"The source type of the sender logo.\n\n- `image_url`: `sender_logo` is treated as a publicly accessible image URL.\n- `uploaded_image`: `sender_logo` is treated as an uploaded image reference from the MoEngage asset manager.\n\n**Required** when `sender_logo` is provided.\n","example":"image_url","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.sender_logo_type","typeLabel":"enum\u003cstring>"},"deal_card":{"type":"object","description":"The Deal Card annotation.\n\n**Optional.** Use either `deal_card` or `product_carousel` — not both. Passing both `deal_card` and `product_carousel` returns a 400 validation error.\n","required":["description","discount_code","availability_starts","availability_ends"],"properties":{"description":{"type":"string","description":"Short deal description shown in the Gmail annotation.\n\n**Required** when `deal_card` is present.\n","example":"Get 20% off on all orders above $50","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.deal_card.description","typeLabel":"string"},"discount_code":{"type":"string","description":"Promo or discount code displayed with the deal.\n\n**Required** when `deal_card` is present.\n","example":"SAVE20","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.deal_card.discount_code","typeLabel":"string"},"availability_starts":{"type":"string","description":"ISO 8601 datetime indicating when the deal becomes active. Use the timezone of the promotion, not your server or API caller timezone. Ensure the timezone matches the promotion's local timezone so the deal displays the correct active and expiry times for your audience.\n\n**Accepted formats:**\n- UTC (`Z` suffix): `YYYY-MM-DDTHH:mm:ssZ` (for example, `2026-06-01T00:00:00Z`).\n- Positive offset: `YYYY-MM-DDTHH:mm:ss+HH:MM` (for example, `2026-06-01T00:00:00+05:30` for IST).\n- Negative offset: `YYYY-MM-DDTHH:mm:ss-HH:MM` (for example, `2026-06-01T00:00:00-07:00` for US Pacific PDT).\n\n**Common offsets:** IST `+05:30`, SGT `+08:00`, GST `+04:00`, CET `+01:00` or `+02:00` (DST), EST `-05:00`, EDT `-04:00`, PST `-08:00`, PDT `-07:00`, UTC `Z` or `+00:00`.\n\n**Required** when `deal_card` is present.\n","example":"2026-06-01T00:00:00Z","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.deal_card.availability_starts","typeLabel":"string"},"availability_ends":{"type":"string","description":"ISO 8601 datetime indicating when the deal expires. Same format as `availability_starts`.\n\nUse the timezone of the promotion, not your server or API caller timezone. Ensure the timezone matches the promotion's local timezone so the deal displays the correct active and expiry times for your audience.\n\nMust be at least 1 hour after `availability_starts`.\n\n**Required** when `deal_card` is present.\n","example":"2026-06-30T23:59:59Z","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.deal_card.availability_ends","typeLabel":"string"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.deal_card","typeLabel":"object"},"product_carousel":{"type":"object","description":"The Product Carousel annotation.\n\n**Optional.** Use either `product_carousel` or `deal_card` — not both. Passing both `deal_card` and `product_carousel` returns a 400 validation error.\n","required":["type"],"properties":{"type":{"type":"string","enum":["MANUAL","PRODUCT_SET"],"description":"The source type for the product carousel.\n\n- `MANUAL`: Specify products directly in the request using `manual_data`.\n- `PRODUCT_SET`: Pull products dynamically from a MoEngage Catalog product set using `product_set_data`. Requires the Product Sets feature to be enabled for your workspace.\n\n**Required** when `product_carousel` is present.\n","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.type","typeLabel":"enum\u003cstring>"},"manual_data":{"type":"object","description":"Products specified directly in the request.\n\n**Required** when `product_carousel.type` is `MANUAL`.\n","required":["currency","products"],"properties":{"currency":{"type":"string","description":"ISO 4217 currency code applied to all products in the carousel.\n\n**Required** when `manual_data` is present.\n","example":"USD","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.currency","typeLabel":"string"},"products":{"type":"array","description":"List of products to display in the carousel.\n\n**Required** when `manual_data` is present. Minimum 2 products.\n","minItems":2,"items":{"type":"object","description":"A single product entry in a manual product carousel. All fields below are required for each product.","required":["id","headline","original_price","discount_value","discount_type","promo_url","product_image"],"properties":{"id":{"type":"string","description":"Unique product identifier.\n\n**Required** for each product.\n","example":"prod-001","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].id","typeLabel":"string"},"headline":{"type":"string","description":"Product name shown in the annotation.\n\n**Required** for each product.\n","example":"Wireless Headphones","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].headline","typeLabel":"string"},"original_price":{"type":"string","description":"Original price of the product as a numeric string.\n\n**Required** for each product.\n","example":"199.99","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].original_price","typeLabel":"string"},"discount_value":{"type":"string","description":"Discount amount as a numeric string. Interpreted as a percentage or absolute value depending on `discount_type`.\n\n**Required** for each product.\n","example":"30","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].discount_value","typeLabel":"string"},"discount_type":{"type":"string","enum":["PERCENT","VALUE"],"description":"How `discount_value` is interpreted.\n\n- `PERCENT`: `discount_value` is a percentage.\n- `VALUE`: `discount_value` is an absolute amount in `currency`.\n\n**Required** for each product.\n","example":"PERCENT","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].discount_type","typeLabel":"enum\u003cstring>"},"promo_url":{"type":"string","description":"Product landing page URL. Must be a valid HTTPS URL.\n\n**Required** for each product.\n","example":"https://example.com/products/prod-001","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].promo_url","typeLabel":"string"},"product_image":{"type":"string","description":"Product image URL. Must be a valid HTTPS URL. Cannot be empty.\n\n**Required** for each product.\n","example":"https://example.com/images/prod-001.png","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX].product_image","typeLabel":"string"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data.products","typeLabel":"object[]"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.manual_data","typeLabel":"object"},"product_set_data":{"type":"object","description":"Reference to a MoEngage Catalog product set.\n\n**Required** when `product_carousel.type` is `PRODUCT_SET`.\n","required":["product_set","image_url","headline","promo_url","product_count"],"properties":{"product_set":{"type":"string","description":"Product set ID from MoEngage Catalog. Must be valid and exist in your workspace.\n\n**Required** when `product_set_data` is present.\n","example":"product_set_12345","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.product_set_data.product_set","typeLabel":"string"},"image_url":{"type":"string","description":"Fallback image URL if a product set image is unavailable.\n\n**Required** when `product_set_data` is present.\n","example":"https://example.com/images/fallback.png","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.product_set_data.image_url","typeLabel":"string"},"headline":{"type":"string","description":"Label shown for the product carousel.\n\n**Required** when `product_set_data` is present.\n","example":"Recommended For You","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.product_set_data.headline","typeLabel":"string"},"promo_url":{"type":"string","description":"Destination URL when the user clicks the annotation.\n\n**Required** when `product_set_data` is present.\n","example":"https://example.com/shop","isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.product_set_data.promo_url","typeLabel":"string"},"product_count":{"type":"integer","description":"Number of products to display.\n\n**Required** when `product_set_data` is present. Minimum 2, maximum 9.\n","minimum":2,"maximum":9,"example":3,"isRequired":true,"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.product_set_data.product_count","typeLabel":"integer"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel.product_set_data","typeLabel":"object"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations.product_carousel","typeLabel":"object"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.gmail_annotations","typeLabel":"object"},"link_branding_domain":{"type":"string","description":"Custom domain for wrapping tracked links, in place of the default MoEngage tracking domain. Configured per workspace under **Settings** > **Link Branding**.\n\n- If supplied, must match a domain already configured for the workspace.\n- Optional — a campaign is accepted without this field even when the workspace has a matching domain configured. Omitting it falls back to the default MoEngage tracking domain.\n- Passing an empty string (`\"\"`) is treated the same as omitting the field.\n- Supported for all delivery types including API_TRIGGERED.\n","example":"yourbrand.com","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.link_branding_domain","typeLabel":"string"},"deep_link_domain":{"type":"string","description":"Custom domain for deep/branch links in the email, in place of the default deep link behavior. Configured per workspace under **Settings** > **Deep Links**.\n\n- If supplied, must match a domain already configured for the workspace.\n- Optional — a campaign is accepted without this field even when the workspace has a matching domain configured. Omitting it uses the default deep link behavior.\n- Can be set independently of `link_branding_domain`.\n- Supported for all delivery types including API_TRIGGERED.\n","example":"deeplink.yourbrand.com","uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email.deep_link_domain","typeLabel":"string"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties.email","typeLabel":"object"}},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties.additionalProperties","typeLabel":"object"},"uniqueKey":"oneOf.1.campaign_content.content.additionalProperties","typeLabel":"object"},"uniqueKey":"oneOf.1.campaign_content.content","typeLabel":"object"}},"uniqueKey":"oneOf.1.campaign_content","typeLabel":"object"},"segmentation_details":{"type":"object","description":"Defines the target audience for the campaign.\n\nFor included/excluded filter combinations, filter primitives (`user_attributes`, `actions`, `custom_segments`), and opt-out targeting, refer to [Campaign audience](/api/campaigns/audience-scheduling-delivery-reference#campaign-audience).\n","properties":{"included_filters":{"type":"object","description":"A group of filters combined with a logical operator.\n\nFor detailed segmentation payload and supported fields, refer to [Create Custom Segment](/api/filter-segments/create-filter-segment).\n","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.1.segmentation_details.included_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.1.segmentation_details.included_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.1.segmentation_details.included_filters","typeLabel":"object"},"excluded_filters":{"type":"object","description":"Filters that exclude users from the campaign audience.\n","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filter_operator","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"],"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.filter_type","typeLabel":"enum\u003cstring>"},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.data_type","typeLabel":"enum\u003cstring>"},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\").","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.category","typeLabel":"string"},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\").","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.name","typeLabel":"string"},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.operator","typeLabel":"string"},"value":{"description":"The value to filter on (not required for 'exists' operator).","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.value","typeLabel":"any"},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.case_sensitive","typeLabel":"boolean"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.negate","typeLabel":"boolean"},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.is_dynamic_value","typeLabel":"boolean"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0.project_name","typeLabel":"string"}},"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.0","typeLabel":"User attributes-based filters · object"},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"],"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.filter_type","typeLabel":"enum\u003cstring>"},"action_name":{"type":"string","description":"The name of the action/event to filter on.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.action_name","typeLabel":"string"},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"],"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.execution.type","typeLabel":"enum\u003cstring>"},"count":{"type":"integer","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.execution.count","typeLabel":"integer"}},"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.execution","typeLabel":"object"},"executed":{"type":"boolean","description":"Whether the action was executed.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.executed","typeLabel":"boolean"},"attributes":{"oneOf":[{"$circularRef":"934f3638-df01-43d4-b16e-fc48573f39bf"}],"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.attributes","typeLabel":"any"},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\".","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1.condition","typeLabel":"string"}},"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.1","typeLabel":"Action-based filters (with or without attributes) · object"},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"],"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2.filter_type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"The name of the custom segment.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2.name","typeLabel":"string"},"id":{"type":"string","description":"The ID of the custom segment.","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2.id","typeLabel":"string"}},"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX].oneOf.2","typeLabel":"Custom segments · object"}],"uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters.items.[INDEX]","typeLabel":"User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object"},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n","uniqueKey":"oneOf.1.segmentation_details.excluded_filters.filters","typeLabel":"(User attributes-based filters · object | Action-based filters (with or without attributes) · object | Custom segments · object)[]"}},"uniqueKey":"oneOf.1.segmentation_details.excluded_filters","typeLabel":"object"},"is_all_user_campaign":{"type":"boolean","description":"Whether to include all users in the campaign.","uniqueKey":"oneOf.1.segmentation_details.is_all_user_campaign","typeLabel":"boolean"},"send_campaign_to_opt_out_users":{"type":"boolean","description":"Whether to send the campaign to users who have opted out. For runnable examples, refer to [Campaign audience](/api/campaigns/audience-scheduling-delivery-reference#campaign-audience).","uniqueKey":"oneOf.1.segmentation_details.send_campaign_to_opt_out_users","typeLabel":"boolean"}},"uniqueKey":"oneOf.1.segmentation_details","typeLabel":"object"},"scheduling_details":{"type":"object","description":"Defines when the campaign should be sent.\n\nFor per-delivery-type runnable payloads (`ASAP`, `AT_FIXED_TIME`, `SEND_IN_BTS`, `SEND_IN_USER_TIMEZONE`, and `PERIODIC` with `periodic_details`), refer to [Campaign delivery schedule](/api/campaigns/audience-scheduling-delivery-reference#campaign-delivery-schedule).\n","properties":{"delivery_type":{"type":"string","enum":["ASAP","AT_FIXED_TIME","SEND_IN_BTS","SEND_IN_USER_TIMEZONE"],"description":"When to deliver the campaign.\n","uniqueKey":"oneOf.1.scheduling_details.delivery_type","typeLabel":"enum\u003cstring>"},"start_time":{"type":"string","format":"date-time","description":"The start time for the campaign in ISO 8601 format. Interpreted in the timezone specified by the `timezone` field. If `timezone` is not provided, pass this value in UTC.\n\nExample: \"2024-06-21T12:59:00\"\n","uniqueKey":"oneOf.1.scheduling_details.start_time","typeLabel":"string\u003cdate-time>"},"expiry_time":{"type":"string","format":"date-time","description":"The expiry time for the campaign in ISO 8601 format. Interpreted in the timezone specified by the `timezone` field. If `timezone` is not provided, pass this value in UTC.\n","uniqueKey":"oneOf.1.scheduling_details.expiry_time","typeLabel":"string\u003cdate-time>"},"timezone":{"type":"string","description":"IANA timezone string for the campaign schedule (for example, `Asia/Kolkata`). Required when `delivery_type` is `AT_FIXED_TIME` or `SEND_IN_BTS`. Optional for `SEND_IN_USER_TIMEZONE`, where each user's own timezone is used.\n","example":"Asia/Kolkata","uniqueKey":"oneOf.1.scheduling_details.timezone","typeLabel":"string"},"periodic_details":{"type":"object","description":"Configuration for periodic campaigns.\n\n**Required** for PERIODIC campaigns.\n\nFor runnable Daily, Weekly, Monthly (specific dates), and Monthly (first Monday) examples, refer to [Periodic schedules](/api/campaigns/audience-scheduling-delivery-reference#periodic-schedules).\n","properties":{"sending_frequency":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY"],"description":"The frequency to send the campaign.","uniqueKey":"oneOf.1.scheduling_details.periodic_details.sending_frequency","typeLabel":"enum\u003cstring>"},"repeat_frequency":{"type":"integer","description":"The repeat frequency of the campaign.","uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_frequency","typeLabel":"integer"},"no_of_occurences":{"type":"integer","description":"The number of occurrences of the campaign.","uniqueKey":"oneOf.1.scheduling_details.periodic_details.no_of_occurences","typeLabel":"integer"},"repeat_on_date_of_month":{"type":"array","items":{"type":"integer","uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_date_of_month.items.[INDEX]","typeLabel":"integer"},"description":"The dates of the month on which the campaign should be repeated.\n\nExample: [5, 25] to send on the 5th and 25th of each month.\n","uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_date_of_month","typeLabel":"integer[]"},"repeat_on_days_of_week":{"type":"array","items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"],"uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_days_of_week.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The days of the week on which the campaign should repeat.\n","uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_days_of_week","typeLabel":"enum\u003cstring>[]"},"repeat_on_days_of_week_for_month":{"type":"array","items":{"type":"object","properties":{"week_granularity":{"type":"string","enum":["FIRST","SECOND","THIRD","FOURTH","LAST"],"uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX].week_granularity","typeLabel":"enum\u003cstring>"},"repeat_on_days_of_week":{"type":"array","items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"],"uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX].repeat_on_days_of_week.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX].repeat_on_days_of_week","typeLabel":"enum\u003cstring>[]"}},"uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_days_of_week_for_month.items.[INDEX]","typeLabel":"object"},"description":"Configuration for repeating on specific weeks of the month.\n","uniqueKey":"oneOf.1.scheduling_details.periodic_details.repeat_on_days_of_week_for_month","typeLabel":"object[]"}},"uniqueKey":"oneOf.1.scheduling_details.periodic_details","typeLabel":"object"},"bts_details":{"type":"object","description":"Best Time to Send (BTS) configuration.\n\nBTS selects an optimal send time per user based on historical engagement patterns.\n\nFor the field schema and required-when-`SEND_IN_BTS` rule, refer to [Best Time to Send](/api/campaigns/audience-scheduling-delivery-reference#best-time-to-send).\n","properties":{"send_in_bts":{"type":"boolean","description":"Whether to send the campaign at the best time.","uniqueKey":"oneOf.1.scheduling_details.bts_details.send_in_bts","typeLabel":"boolean"},"if_user_bts_is_not_available":{"type":"string","description":"When to send the campaign if the user's best time is not available.","uniqueKey":"oneOf.1.scheduling_details.bts_details.if_user_bts_is_not_available","typeLabel":"string"},"if_user_bts_outside_time_window":{"type":"string","description":"When to send the campaign if the user's best time is outside the time window.","uniqueKey":"oneOf.1.scheduling_details.bts_details.if_user_bts_outside_time_window","typeLabel":"string"},"window_end_time":{"type":"string","description":"The window end time.","example":"6:43 am","uniqueKey":"oneOf.1.scheduling_details.bts_details.window_end_time","typeLabel":"string"}},"uniqueKey":"oneOf.1.scheduling_details.bts_details","typeLabel":"object"},"user_timezone_details":{"type":"object","description":"Configuration for sending in the user's timezone.\n\nFor the field schema and required-when-`SEND_IN_USER_TIMEZONE` rule, refer to [User timezone](/api/campaigns/audience-scheduling-delivery-reference#user-timezone).\n","properties":{"send_in_user_timezone":{"type":"boolean","description":"Whether to send the campaign on a specific date and time within the user's timezone.","uniqueKey":"oneOf.1.scheduling_details.user_timezone_details.send_in_user_timezone","typeLabel":"boolean"},"send_if_user_timezone_has_passed":{"type":"boolean","description":"Whether to send the campaign if the user's timezone has passed.","uniqueKey":"oneOf.1.scheduling_details.user_timezone_details.send_if_user_timezone_has_passed","typeLabel":"boolean"}},"uniqueKey":"oneOf.1.scheduling_details.user_timezone_details","typeLabel":"object"},"geo_fence_timelimit":{"type":"object","description":"Defines the delivery time window for location-triggered campaigns. When configured, notifications are delivered only within the specified schedule.\n\n**Applicable for:** `LOCATION_TRIGGERED` campaigns.\n","properties":{"notification_schedule":{"type":"string","enum":["ALWAYS","LIMITED_TIME"],"description":"Controls when delivery is permitted. Set to `ALWAYS` to allow delivery at any time, or `LIMITED_TIME` to restrict delivery to the configured time bounds.","uniqueKey":"oneOf.1.scheduling_details.geo_fence_timelimit.notification_schedule","typeLabel":"enum\u003cstring>"},"timebounds":{"type":"array","description":"One or more start and end time windows within which delivery is permitted.\n\n**Required** when `notification_schedule` is `LIMITED_TIME`.\n","items":{"type":"object","properties":{"start_time":{"type":"string","format":"date-time","description":"Start of the delivery window in ISO 8601 format.","example":"2027-06-19T11:02:00","uniqueKey":"oneOf.1.scheduling_details.geo_fence_timelimit.timebounds.items.[INDEX].start_time","typeLabel":"string\u003cdate-time>"},"end_time":{"type":"string","format":"date-time","description":"End of the delivery window in ISO 8601 format.","example":"2029-06-20T13:55:00","uniqueKey":"oneOf.1.scheduling_details.geo_fence_timelimit.timebounds.items.[INDEX].end_time","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"oneOf.1.scheduling_details.geo_fence_timelimit.timebounds.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.1.scheduling_details.geo_fence_timelimit.timebounds","typeLabel":"object[]"}},"uniqueKey":"oneOf.1.scheduling_details.geo_fence_timelimit","typeLabel":"object"}},"uniqueKey":"oneOf.1.scheduling_details","typeLabel":"object"},"delivery_controls":{"type":"object","description":"Controls for Email campaign delivery behavior.\n\nFor runnable examples, refer to [Email delivery controls](/api/campaigns/audience-scheduling-delivery-reference#email-delivery-controls).\n","properties":{"bypass_dnd":{"type":"boolean","description":"Whether to bypass Do Not Disturb settings.","uniqueKey":"oneOf.1.delivery_controls.bypass_dnd","typeLabel":"boolean"},"campaign_throttle_rpm":{"type":"integer","description":"The campaign throttle in requests per minute.","example":2000,"uniqueKey":"oneOf.1.delivery_controls.campaign_throttle_rpm","typeLabel":"integer"},"count_for_frequency_capping":{"type":"boolean","description":"Whether to count this campaign for frequency capping.","uniqueKey":"oneOf.1.delivery_controls.count_for_frequency_capping","typeLabel":"boolean"},"ignore_frequency_capping":{"type":"boolean","description":"Whether to ignore frequency capping for this campaign.","uniqueKey":"oneOf.1.delivery_controls.ignore_frequency_capping","typeLabel":"boolean"},"minimum_delay_between_two_notification_in_hour":{"type":"integer","description":"Minimum delay between two notifications in hours.","uniqueKey":"oneOf.1.delivery_controls.minimum_delay_between_two_notification_in_hour","typeLabel":"integer"},"limit_send_config":{"type":"object","description":"Configuration for limiting how many times a user can receive this campaign within a specified rolling time window. When enabled, MoEngage drops deliveries to users who have already reached `max_count` within the window and records the outcome in campaign analytics.\n\nApplies to `PERIODIC` and `EVENT_TRIGGERED` campaigns. Not applicable to transactional campaigns, which do not have delivery controls.\n","properties":{"enabled":{"type":"boolean","description":"Whether the send limit is enforced for this campaign. When `false`, `max_count`, `window_value`, and `window_unit` are ignored.\n","example":true,"isRequired":true,"uniqueKey":"oneOf.1.delivery_controls.limit_send_config.enabled","typeLabel":"boolean"},"max_count":{"type":"integer","minimum":1,"description":"The maximum number of times a user can receive this campaign within the window defined by `window_value` and `window_unit`.\n","example":1,"uniqueKey":"oneOf.1.delivery_controls.limit_send_config.max_count","typeLabel":"integer"},"window_value":{"type":"integer","minimum":1,"description":"The size of the rolling time window during which `max_count` is enforced. Combined with `window_unit` — for example, `window_value: 1` with `window_unit: DAYS` enforces the limit across a 24-hour rolling window. The maximum frequency window you can configure is **1 year**, which means, up to **12 months**, **52 weeks**, or **365 days**, depending on the unit you choose.\n","example":1,"uniqueKey":"oneOf.1.delivery_controls.limit_send_config.window_value","typeLabel":"integer"},"window_unit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","YEAR"],"description":"The unit of time for `window_value`. `HOURS` is applicable only to event triggered campaigns.\n","example":"DAYS","uniqueKey":"oneOf.1.delivery_controls.limit_send_config.window_unit","typeLabel":"enum\u003cstring>"}},"required":["enabled"],"uniqueKey":"oneOf.1.delivery_controls.limit_send_config","typeLabel":"object"}},"uniqueKey":"oneOf.1.delivery_controls","typeLabel":"object"},"conversion_goal_details":{"type":"object","description":"Configuration for tracking campaign conversion goals.\n\nFor runnable single-goal and multi-goal examples, refer to [Conversion goal tracking](/api/campaigns/audience-scheduling-delivery-reference#conversion-goal-tracking).\n","properties":{"attribution_window_in_hours":{"type":"integer","description":"The attribution window in hours.","example":36,"uniqueKey":"oneOf.1.conversion_goal_details.attribution_window_in_hours","typeLabel":"integer"},"goals":{"type":"array","items":{"type":"object","description":"A single conversion goal configuration.","properties":{"goal_name":{"type":"string","description":"The name of the goal.","example":"Goal 1","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_name","typeLabel":"string"},"goal_event_name":{"type":"string","description":"The event name associated with this goal.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_name","typeLabel":"string"},"goal_event_attribute":{"type":"object","description":"Attributes associated with the conversion goal event.","properties":{"name":{"type":"string","description":"The name of the goal event attribute.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.name","typeLabel":"string"},"condition":{"type":"string","description":"The condition used while creating the goal (e.g., \"is\", \"contains\", \"between\").","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.condition","typeLabel":"string"},"data_type":{"type":"string","enum":["STRING","DOUBLE","BOOL","NUMBER","GEOPOINT","DATETIME","ARRAY_DOUBLE","ARRAY_STRING","OBJECT","ARRAY_OBJECT"],"description":"The data type of the attribute.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.data_type","typeLabel":"enum\u003cstring>"},"value":{"type":"string","description":"The value of the goal event attribute.\nSupported data types: STRING, DOUBLE, BOOL, NUMBER, GEOPOINT, DATETIME, ARRAY_DOUBLE, ARRAY_STRING.\n","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.value","typeLabel":"string"},"value1":{"type":"string","description":"A secondary value, used for conditions like 'between'.\nSupported data types: STRING, DOUBLE, BOOL, NUMBER, GEOPOINT, DATETIME, ARRAY_DOUBLE, ARRAY_STRING.\n","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.value1","typeLabel":"string"},"negate":{"type":"boolean","description":"Whether to negate the filter condition.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.negate","typeLabel":"boolean"},"value_type":{"type":"string","description":"The type of value being filtered.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.value_type","typeLabel":"string"},"array_filter_type":{"type":"string","description":"The logical filter type for array attributes.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.array_filter_type","typeLabel":"string"},"filters":{"type":"array","items":{"type":"object","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.filters.items.[INDEX]","typeLabel":"object"},"description":"A list of sub-filters used when data_type is OBJECT or ARRAY_OBJECT.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.filters","typeLabel":"object[]"},"is_case_sensitive":{"type":"boolean","description":"Whether the goal event attribute is case-sensitive.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute.is_case_sensitive","typeLabel":"boolean"}},"uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].goal_event_attribute","typeLabel":"object"},"is_primary_goal":{"type":"boolean","description":"Whether this is the primary goal.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].is_primary_goal","typeLabel":"boolean"},"revenue_attribute":{"type":"string","description":"The revenue attribute to track.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].revenue_attribute","typeLabel":"string"},"revenue_currency":{"type":"string","description":"The currency for revenue tracking.","uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX].revenue_currency","typeLabel":"string"}},"uniqueKey":"oneOf.1.conversion_goal_details.goals.items.[INDEX]","typeLabel":"object"},"description":"List of conversion goals to track.","uniqueKey":"oneOf.1.conversion_goal_details.goals","typeLabel":"object[]"}},"uniqueKey":"oneOf.1.conversion_goal_details","typeLabel":"object"},"control_group_details":{"type":"object","description":"Configuration for control groups.\n\nFor runnable campaign-control-group and global-control-group examples, refer to [Control groups](/api/campaigns/audience-scheduling-delivery-reference#control-groups).\n","properties":{"is_campaign_control_group_enabled":{"type":"boolean","description":"Whether the campaign control group is enabled.","uniqueKey":"oneOf.1.control_group_details.is_campaign_control_group_enabled","typeLabel":"boolean"},"campaign_control_group_percentage":{"type":"integer","minimum":0,"maximum":100,"description":"The percentage of users added to the exclusion list.\n\n**Required** if is_campaign_control_group_enabled is true.\n","uniqueKey":"oneOf.1.control_group_details.campaign_control_group_percentage","typeLabel":"integer"},"is_global_control_group_enabled":{"type":"boolean","description":"Whether the global control group is enabled.\n","uniqueKey":"oneOf.1.control_group_details.is_global_control_group_enabled","typeLabel":"boolean"}},"uniqueKey":"oneOf.1.control_group_details","typeLabel":"object"},"utm_params":{"type":"object","description":"UTM parameters for tracking campaign performance. The five standard keys (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`) are explicitly defined.\n\n**Custom UTM parameters:** Up to 5 additional custom parameters can be passed as separate keys directly inside the `utm_params` object. Custom keys accept arbitrary names — the `utm_` prefix is a convention, not a requirement (for example, `utm_cust` or `campaign_source` are both accepted).\n\nFor runnable examples, refer to [UTM parameters](/api/campaigns/audience-scheduling-delivery-reference#utm-parameters).\n","properties":{"utm_source":{"type":"string","description":"The source of the traffic (for example, YouTube, Instagram, Google).\n\n**Required** when using UTM parameters.\n","example":"{{utm_source}}","uniqueKey":"oneOf.1.utm_params.utm_source","typeLabel":"string"},"utm_medium":{"type":"string","description":"The channel type (for example, Push, SMS, Email).\n\n**Required** when using UTM parameters.\n","example":"{{utm_medium}}","uniqueKey":"oneOf.1.utm_params.utm_medium","typeLabel":"string"},"utm_campaign":{"type":"string","description":"The name of the campaign (for example, Newyear, Bigbillionday).","example":"{{utm_campaign}}","uniqueKey":"oneOf.1.utm_params.utm_campaign","typeLabel":"string"},"utm_term":{"type":"string","description":"Search terms for paid traffic (for example, Mobile+sale).","uniqueKey":"oneOf.1.utm_params.utm_term","typeLabel":"string"},"utm_content":{"type":"string","description":"The content element that differentiates links (for example, banner, video).","uniqueKey":"oneOf.1.utm_params.utm_content","typeLabel":"string"},"utm_custom":{"type":"string","description":"A single custom UTM parameter value. For multiple custom parameters, pass them as\nseparate top-level keys inside the `utm_params` object using arbitrary `utm_`-prefixed\nnames (for example, `utm_cust`, `utm_c1ust`, `utm_c2ust`). A maximum of 5 custom\nparameters is supported in total.\n","uniqueKey":"oneOf.1.utm_params.utm_custom","typeLabel":"string"}},"additionalProperties":{"type":"string","description":"Arbitrary custom UTM parameters with `utm_`-prefixed key names (for example, `utm_cust`,\n`utm_c1ust`). Up to 5 custom parameters are supported in total across all custom keys.\n","uniqueKey":"oneOf.1.utm_params.additionalProperties","typeLabel":"string"},"uniqueKey":"oneOf.1.utm_params","typeLabel":"object"},"campaign_audience_limit":{"type":"object","description":"Configuration for capping the number of users a campaign can reach (max-send).\n\nCampaign Audience Limit (also called max-send) caps how many users a single campaign can reach. Use it to control reach on high-volume campaigns and protect users from over-messaging. The cap can apply across the campaign's full lifetime (`frequency: TOTAL`) or per send instance (`frequency: INSTANCE`).\n\nFor runnable `TOTAL` (lifetime cap), `INSTANCE` (per-send cap, Periodic Push only), and disabled-cap examples, refer to [Campaign audience cap](/api/campaigns/audience-scheduling-delivery-reference#campaign-audience-cap).\n\n**Supported channels:** Email, Push.\n\n**Supported delivery types:**\n- All delivery types support `frequency: TOTAL` (lifetime cap).\n- `frequency: INSTANCE` (per-send cap) is supported only for **Periodic Push** campaigns.\n- `campaign_audience_limit` is not supported for `BROADCAST_LIVE_ACTIVITY`.\n\n**Flag-gated feature:** This feature is not enabled by default for any workspace and requires\nexplicit activation by your MoEngage account team. If you include `campaign_audience_limit` in\na request on a workspace where the flag has not been enabled, the API returns a `400` with the\nfollowing error body:\n\n```json\n{\n \"error\": {\n \"code\": \"VALIDATION_FAILED\",\n \"message\": \"Campaign Audience Limit feature is not enabled for this db\",\n \"target\": \"campaign_audience_limit\",\n \"details\": [\n {\n \"target\": \"campaign_audience_limit\",\n \"message\": \"Campaign Audience Limit feature is not enabled for this db\"\n }\n ]\n },\n \"response_id\": \"{{response_id}}\"\n}\n```\n\nWhen `is_campaign_audience_limit_enabled` is `true`, the fields `metric`, `frequency`, and\n`limit` are all required. When set to `false`, those three fields must not be provided.\n\nFor `ONE_TIME` campaigns, only `limit` and `is_campaign_audience_limit_enabled` are supported. Do not pass `metric` or `frequency`, they are only valid for `PERIODIC` and `EVENT_TRIGGERED` campaigns. \nPassing them for a ONE_TIME campaign causes the validate API to fail. \n","properties":{"is_campaign_audience_limit_enabled":{"type":"boolean","description":"Whether the campaign audience limit is active. Set to `true` to enforce the cap; `false` to disable.\n\nWhen `true`, `metric`, `frequency`, and `limit` are all required.\nWhen `false`, `metric`, `frequency`, and `limit` must not be provided.\n","uniqueKey":"oneOf.1.campaign_audience_limit.is_campaign_audience_limit_enabled","typeLabel":"boolean"},"metric":{"type":"string","description":"The type of send event counted toward the limit. Must be uppercase.\n\n**Required** when `is_campaign_audience_limit_enabled` is `true`.\n","enum":["SENT"],"example":"SENT","uniqueKey":"oneOf.1.campaign_audience_limit.metric","typeLabel":"enum\u003cstring>"},"frequency":{"type":"string","description":"The window over which the limit is applied. Must be uppercase.\n\n- `TOTAL` - applies the cap across the full lifetime of the campaign. Supported for all delivery types on both Email and Push.\n- `INSTANCE` - applies the cap per campaign instance (for example, per periodic send). **Valid only for Push `PERIODIC` campaigns.** For all other delivery types, use `TOTAL`.\n\n**Required** when `is_campaign_audience_limit_enabled` is `true`.\n","enum":["TOTAL","INSTANCE"],"example":"TOTAL","uniqueKey":"oneOf.1.campaign_audience_limit.frequency","typeLabel":"enum\u003cstring>"},"limit":{"type":"integer","minimum":1,"maximum":9999999999,"description":"The maximum number of users who can receive this campaign (or per instance, when\n`frequency` is `INSTANCE`). Must be between 1 and 9,999,999,999.\n\n**Required** when `is_campaign_audience_limit_enabled` is `true`.\n","example":100000,"uniqueKey":"oneOf.1.campaign_audience_limit.limit","typeLabel":"integer"}},"uniqueKey":"oneOf.1.campaign_audience_limit","typeLabel":"object"}},"uniqueKey":"oneOf.1","typeLabel":"Email Campaign · object"}],"uniqueKey":"","typeLabel":"Push Campaign · object | Email Campaign · object"},"examples":{"push_one_time":{"title":"push_one_time","value":{"request_id":"{{request_id}}","channel":"PUSH","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","platforms":["ANDROID"]},"campaign_content":{"content":{"push":{"android":{"template_type":"BASIC","basic_details":{"notification_channel":"{{notification_channel}}","title":"{{title}}","message":"{{message}}","default_click_action":"DEEPLINKING","default_click_action_value":"{{deep_link_url}}"}}}}},"scheduling_details":{"delivery_type":"ASAP"}}},"push_periodic":{"title":"push_periodic","value":{"request_id":"{{request_id}}","channel":"PUSH","campaign_delivery_type":"PERIODIC","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","platforms":["ANDROID","IOS"]},"campaign_content":{"content":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title}}","message":"{{message}}"}}}}},"scheduling_details":{"delivery_type":"AT_FIXED_TIME","start_time":"{{start_time}}","periodic_details":{"sending_frequency":"WEEKLY","repeat_frequency":1,"repeat_on_days_of_week":["MONDAY"]}},"delivery_controls":{"limit_send_config":{"enabled":true,"max_count":1,"window_value":1,"window_unit":"DAYS"}}}},"email_one_time":{"title":"email_one_time","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"PROMOTIONAL","user_attribute_identifier":"Email (Standard)","subscription_category":"{{subscription_category}}"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","sender_name":"{{sender_name}}","from_address":"{{from_email}}","html_content":"{{html_body}}","email_editor":"Froala Editor"}}},"scheduling_details":{"delivery_type":"ASAP"}}},"email_event_triggered_delay":{"title":"email_event_triggered_delay","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"EVENT_TRIGGERED","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"TRANSACTIONAL"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"trigger_condition":{"included_filters":{"filter_operator":"and","filters":[{"filter_type":"actions","action_name":"{{action_name}}","execution":{"type":"atleast","count":1},"executed":true,"condition":"IF"}]},"trigger_delay_type":"DELAY","trigger_delay_value":1,"trigger_delay_granularity":"HOURS","trigger_relation":"AFTER","trigger_attr":"If Action"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","sender_name":"{{sender_name}}","from_address":"{{from_address}}","html_content":"{{html_body}}"}}},"scheduling_details":{"delivery_type":"AT_FIXED_TIME","start_time":"{{start_time}}","expiry_time":"{{expiry_time}}"}}},"email_with_gmail_annotations_deal_card":{"title":"email_with_gmail_annotations_deal_card","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"PROMOTIONAL","user_attribute_identifier":"Email (Standard)","subscription_category":"{{subscription_category}}"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"Exclusive Deal Just for You","preview_text":"Save big with our limited-time offer","sender_name":"{{sender_name}}","from_address":"{{from_email}}","reply_to_address":"{{reply_to_address}}","html_content":"\u003c!DOCTYPE html>\u003chtml>\u003cbody>\u003cp>Deal!\u003c/p>\u003c/body>\u003c/html>","gmail_annotations":{"send_email_if_personalization_fails":true,"sender_logo":"{{sender_logo}}","sender_logo_type":"image_url","deal_card":{"description":"Get 20% off on all orders above $50","discount_code":"SAVE20","availability_starts":"2026-06-01T00:00:00+05:30","availability_ends":"2026-06-30T23:59:59+05:30"}}}}},"scheduling_details":{"delivery_type":"ASAP"}}},"email_with_gmail_annotations_product_carousel_manual":{"title":"email_with_gmail_annotations_product_carousel_manual","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"PROMOTIONAL","user_attribute_identifier":"Email (Standard)","subscription_category":"{{subscription_category}}"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"Featured Products This Week","preview_text":"Discover our latest deals","sender_name":"{{sender_name}}","from_address":"{{from_email}}","reply_to_address":"{{reply_to_address}}","html_content":"\u003c!DOCTYPE html>\u003chtml>\u003cbody>\u003cp>Shop now!\u003c/p>\u003c/body>\u003c/html>","gmail_annotations":{"send_email_if_personalization_fails":true,"sender_logo":"{{sender_logo}}","sender_logo_type":"image_url","product_carousel":{"type":"MANUAL","manual_data":{"currency":"{{currency}}","products":[{"id":"{{id}}","headline":"{{headline}}","original_price":"{{original_price}}","discount_value":"{{discount_value}}","discount_type":"PERCENT","promo_url":"{{promo_url}}","product_image":"{{product_image}}"},{"id":"{{id}}","headline":"{{headline}}","original_price":"{{original_price}}","discount_value":"{{discount_value}}","discount_type":"VALUE","promo_url":"{{promo_url}}","product_image":"{{product_image}}"}]}}}}}},"scheduling_details":{"delivery_type":"ASAP"}}},"email_with_gmail_annotations_product_carousel_product_set":{"title":"email_with_gmail_annotations_product_carousel_product_set","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"PROMOTIONAL","user_attribute_identifier":"Email (Standard)","subscription_category":"{{subscription_category}}"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"Picks Curated For You","preview_text":"Personalized recommendations","sender_name":"{{sender_name}}","from_address":"{{from_email}}","reply_to_address":"{{reply_to_address}}","html_content":"\u003c!DOCTYPE html>\u003chtml>\u003cbody>\u003cp>Shop now!\u003c/p>\u003c/body>\u003c/html>","gmail_annotations":{"send_email_if_personalization_fails":true,"sender_logo":"{{sender_logo}}","sender_logo_type":"image_url","product_carousel":{"type":"PRODUCT_SET","product_set_data":{"product_set":"product_set_12345","image_url":"https://example.com/images/fallback.png","headline":"{{headline}}","promo_url":"{{promo_url}}","product_count":3}}}}}},"scheduling_details":{"delivery_type":"ASAP"}}},"email_api_triggered":{"title":"email_api_triggered","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"API_TRIGGERED","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"PROMOTIONAL","user_attribute_identifier":"Email (Standard)","subscription_category":"{{subscription_category}}"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","preview_text":"{{preview_text}}","sender_name":"{{sender_name}}","from_address":"{{from_email}}","reply_to_address":"{{reply_to_email}}","html_content":"{{html_body}}"}}},"delivery_controls":{"ignore_frequency_capping":false,"count_for_frequency_capping":true}}},"push_event_triggered":{"title":"push_event_triggered","value":{"request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","channel":"PUSH","campaign_delivery_type":"EVENT_TRIGGERED","created_by":"[email protected]","basic_details":{"name":"Cart Abandonment - Push","platforms":["ANDROID","IOS"]},"trigger_condition":{"included_filters":{"filter_operator":"and","filters":[{"filter_type":"actions","action_name":"cart_abandoned","execution":{"type":"atleast","count":1},"executed":true}]},"trigger_delay_type":"DELAY","trigger_delay_value":1,"trigger_delay_granularity":"HOURS","trigger_relation":"AFTER"},"campaign_content":{"content":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"Items in your cart","message":"You left something behind. Complete your purchase before it sells out.","default_click_action":"DEEPLINKING","default_click_action_value":"myapp://cart"}},"ios":{"template_type":"BASIC","basic_details":{"title":"Items in your cart","message":"You left something behind. Complete your purchase before it sells out.","default_click_action":"DEEPLINKING","default_click_action_value":"myapp://cart"}}}}},"scheduling_details":{"delivery_type":"AT_FIXED_TIME","start_time":"2026-07-01T00:00:00","expiry_time":"2026-12-31T23:59:59"},"delivery_controls":{"bypass_dnd":false,"minimum_delay_between_two_notification_in_hour":24,"ignore_global_minimum_delay":false,"limit_send_config":{"enabled":true,"max_count":1,"window_value":1,"window_unit":"DAYS"}}}},"push_business_event_triggered":{"title":"push_business_event_triggered","value":{"request_id":"{{request_id}}","channel":"PUSH","campaign_delivery_type":"BUSINESS_EVENT_TRIGGERED","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","business_event":"{{business_event_name}}","platforms":["ANDROID"]},"campaign_content":{"content":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title}}","message":"{{message}}"}}}}},"scheduling_details":{"delivery_type":"AT_FIXED_TIME","start_time":"{{start_time}}","expiry_time":"{{expiry_time}}"}}},"push_device_triggered":{"title":"push_device_triggered","value":{"request_id":"{{request_id}}","channel":"PUSH","campaign_delivery_type":"DEVICE_TRIGGERED","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","platforms":["ANDROID"]},"trigger_condition":{"included_filters":{"filter_operator":"and","filters":[{"filter_type":"actions","action_name":"{{device_trigger_event_name}}","execution":{"type":"atleast","count":1},"executed":true}]},"trigger_delay_type":"ASAP"},"campaign_content":{"content":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title}}","message":"{{message}}"}}}}},"delivery_controls":{"max_time_to_show_message_of_same_camapign":"{{max_display_hours}}","expiry_time_of_sync_data_in_hour":"{{sync_expiry_hours}}","send_message_in_offline_mode":true}}},"push_location_triggered":{"title":"push_location_triggered","value":{"request_id":"{{request_id}}","channel":"PUSH","campaign_delivery_type":"LOCATION_TRIGGERED","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","platforms":["ANDROID","IOS"],"geofences":{"name":"{{geofence_name}}","latitude":"{{latitude}}","longitude":"{{longitude}}","radius":"{{radius_meters}}","response_time_value":"5","response_time_granularity":"MINUTES","triggered_at":"ENTRY"}},"campaign_content":{"content":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title}}","message":"{{message}}"}}}}},"delivery_controls":{"send_limit_value":"{{max_sends_per_user}}","send_limit_granularity_in_hours":"{{send_limit_window_hours}}"}}},"email_one_time_promotional":{"title":"email_one_time_promotional","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"PROMOTIONAL","user_attribute_identifier":"Email (Standard)","subscription_category":"{{subscription_category}}"},"connector":{"connector_type":"SENDGRID","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","sender_name":"{{sender_name}}","from_address":"{{from_email}}","html_content":"{{html_body}}"}}},"scheduling_details":{"delivery_type":"ASAP"}}},"email_one_time_transactional":{"title":"email_one_time_transactional","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"TRANSACTIONAL","user_attribute_identifier":"Email (Standard)"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","sender_name":"{{sender_name}}","from_address":"{{from_email}}","html_content":"{{html_body}}"}}},"scheduling_details":{"delivery_type":"ASAP"}}},"email_periodic":{"title":"email_periodic","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"PERIODIC","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"PROMOTIONAL","subscription_category":"{{subscription_category}}"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","sender_name":"{{sender_name}}","from_address":"{{from_email}}","html_content":"{{html_body}}"}}},"scheduling_details":{"delivery_type":"AT_FIXED_TIME","start_time":"{{start_time}}","periodic_details":{"sending_frequency":"WEEKLY","repeat_frequency":1,"repeat_on_days_of_week":["TUESDAY"]}},"delivery_controls":{"limit_send_config":{"enabled":true,"max_count":1,"window_value":1,"window_unit":"DAYS"}}}},"email_event_triggered":{"title":"email_event_triggered","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"EVENT_TRIGGERED","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","content_type":"TRANSACTIONAL"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"trigger_condition":{"included_filters":{"filter_operator":"and","filters":[{"filter_type":"actions","action_name":"{{action_name}}","execution":{"type":"atleast","count":1},"executed":true}]},"trigger_delay_type":"ASAP"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","sender_name":"{{sender_name}}","from_address":"{{from_address}}","html_content":"{{html_body}}"}}},"scheduling_details":{"delivery_type":"AT_FIXED_TIME","start_time":"{{start_time}}","expiry_time":"{{expiry_time}}"},"delivery_controls":{"limit_send_config":{"enabled":true,"max_count":1,"window_value":1,"window_unit":"DAYS"}}}},"email_business_event_triggered":{"title":"email_business_event_triggered","value":{"request_id":"{{request_id}}","channel":"EMAIL","campaign_delivery_type":"BUSINESS_EVENT_TRIGGERED","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","business_event":"{{business_event_name}}","content_type":"TRANSACTIONAL"},"connector":{"connector_type":"{{connector_type}}","connector_name":"{{connector_name}}"},"campaign_content":{"content":{"email":{"subject":"{{email_subject}}","sender_name":"{{sender_name}}","from_address":"{{from_email}}","html_content":"{{html_body}}"}}},"scheduling_details":{"delivery_type":"AT_FIXED_TIME","start_time":"{{start_time}}","expiry_time":"{{expiry_time}}"}}},"push_web_one_time":{"title":"push_web_one_time","value":{"request_id":"{{request_id}}","channel":"PUSH","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","platforms":["WEB"]},"campaign_content":{"content":{"push":{"web":{"template_type":"BASIC","basic_details":{"title":"{{title}}","message":"{{message}}","redirect_url":"{{redirect_url}}","image_url":"{{image_url}}"},"buttons":[{"title":"{{button_label}}","url":"{{button_url}}"}]}}}},"scheduling_details":{"delivery_type":"ASAP"}}},"push_multi_locale_ab_variation":{"title":"push_multi_locale_ab_variation","value":{"request_id":"{{request_id}}","channel":"PUSH","campaign_delivery_type":"ONE_TIME","created_by":"{{user_email}}","basic_details":{"name":"{{campaign_name}}","platforms":["ANDROID"]},"campaign_content":{"locales":["es-ES"],"variation_details":{"distribution_type":"MANUAL","no_of_variations":2,"manual_distribution_percentage":{"variation_1":50,"variation_2":50}},"content":{"default":{"variation_1":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title_v1}}","message":"{{message_v1}}"}}}},"variation_2":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title_v2}}","message":"{{message_v2}}"}}}}},"es-ES":{"variation_1":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title_es_v1}}","message":"{{message_es_v1}}"}}}},"variation_2":{"push":{"android":{"template_type":"BASIC","basic_details":{"title":"{{title_es_v2}}","message":"{{message_es_v2}}"}}}}}}},"scheduling_details":{"delivery_type":"ASAP"}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"1164eaf1-ef8f-45a0-af63-b6f5b8b10f4b":{"description":"Draft created","content":{"application/json":{"schema":{"type":"object","properties":{"response_id":{"type":"string","uniqueKey":"response_id","typeLabel":"string"},"type":{"type":"string","example":"campaign","uniqueKey":"type","typeLabel":"string"},"data":{"type":"object","description":"Payload returned when a draft is successfully created.","required":["id","status","campaign_delivery_type"],"properties":{"id":{"type":"string","description":"Raw 24-character campaign ObjectId.","example":"64a1b2c3d4e5f6a7b8c9d0e1","isRequired":true,"uniqueKey":"data.id","typeLabel":"string"},"status":{"type":"string","enum":["DRAFT"],"description":"Created campaigns are always returned as `DRAFT`.","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"campaign_delivery_type":{"type":"string","enum":["ONE_TIME","PERIODIC","EVENT_TRIGGERED","BUSINESS_EVENT_TRIGGERED","DEVICE_TRIGGERED","LOCATION_TRIGGERED","BROADCAST_LIVE_ACTIVITY","API_TRIGGERED"],"description":"The delivery type of the campaign. It echoes the `campaign_delivery_type` sent in the request.","example":"ONE_TIME","isRequired":true,"uniqueKey":"data.campaign_delivery_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"draft_created":{"title":"draft_created","value":{"response_id":"abc-101","type":"campaign","data":{"id":"64a1b2c3d4e5f6a7b8c9d0e1","status":"DRAFT","campaign_delivery_type":"ONE_TIME"}}},"api_triggered_shell_created":{"title":"api_triggered_shell_created","value":{"response_id":"abc-102","type":"campaign","data":{"id":"6a9a8b9100919e1be1bb3f6e","status":"DRAFT","campaign_delivery_type":"API_TRIGGERED"}}}},"exampleType":"examples"}},"exampleType":"examples"},"4f31be60-f21c-4cbf-b720-a20c9bc739f1":{"description":"Request failed schema or component validation.","content":{"application/json":{"schema":{"type":"object","properties":{"response_id":{"type":"string","description":"Unique identifier for this response. Echoes the request's `request_id` when one was supplied.","uniqueKey":"response_id","typeLabel":"string"},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code. Branch on this value rather than matching on `message`, which can change.","enum":["VALIDATION_FAILED","UNPROCESSABLE_ENTITY","BAD_REQUEST","RATE_LIMITED","UNAUTHORIZED","INTERNAL_ERROR","FORBIDDEN"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation of the failure, intended for logs and debugging.","uniqueKey":"error.message","typeLabel":"string"},"target":{"type":"string","description":"The request field or component the error applies to, when the failure can be attributed to one.","uniqueKey":"error.target","typeLabel":"string"},"details":{"type":"array","description":"Per-field breakdown, returned when more than one field failed validation.","items":{"type":"object","properties":{"target":{"type":"string","description":"The specific request field that failed validation.","uniqueKey":"error.details.items.[INDEX].target","typeLabel":"string"},"message":{"type":"string","description":"What failed for that field.","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"},"request_id":{"type":"string","description":"The `request_id` from the originating request. Use this to correlate a failed response back to the specific call that triggered it, particularly useful in high-volume or retry scenarios.\n\nIn V1, `request_id` appeared inside the `error` object. V5 preserves this field in the same location.\n","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"validation_failed":{"title":"validation_failed","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","request_id":"req-push-001","details":[{"target":"campaign_delivery_type","message":"campaign_delivery_type value is required."}]}}},"double_opt_in_not_enabled_for_account":{"title":"double_opt_in_not_enabled_for_account","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"Double opt-in is not enabled for this account","target":"basic_details","details":[{"target":"basic_details.send_only_double_opt_in_users","message":"Double opt-in is not enabled for this account"}]}}},"double_opt_in_single_opt_in_method":{"title":"double_opt_in_single_opt_in_method","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"send_only_double_opt_in_users cannot be set to true when account opt-in method is Single Opt-in","target":"basic_details","details":[{"target":"basic_details.send_only_double_opt_in_users","message":"send_only_double_opt_in_users cannot be set to true when account opt-in method is Single Opt-in"}]}}},"double_opt_in_used_on_transactional_campaign":{"title":"double_opt_in_used_on_transactional_campaign","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"send_only_double_opt_in_users is not supported for transactional campaigns","target":"basic_details","details":[{"target":"basic_details.send_only_double_opt_in_users","message":"send_only_double_opt_in_users is not supported for transactional campaigns"}]}}},"double_opt_in_wrong_type":{"title":"double_opt_in_wrong_type","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"send_only_double_opt_in_users - Invalid value passed. Expected type: boolean","target":"basic_details","details":[{"target":"basic_details.send_only_double_opt_in_users","message":"send_only_double_opt_in_users - Invalid value passed. Expected type: boolean"}]}}},"deduplication_attribute_feature_not_enabled_for_account":{"title":"deduplication_attribute_feature_not_enabled_for_account","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"Brand dedup is not enabled for this account","target":"basic_details","details":[{"target":"basic_details.deduplication_attribute","message":"Brand dedup is not enabled for this account"}]}}},"deduplication_attribute_invalid_attribute_name":{"title":"deduplication_attribute_invalid_attribute_name","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"deduplication_attribute '\u003cvalue>' is not a valid user attribute for this account","target":"basic_details","details":[{"target":"basic_details.deduplication_attribute","message":"deduplication_attribute '\u003cvalue>' is not a valid user attribute for this account"}]}}},"deduplication_attribute_wrong_type_non_string":{"title":"deduplication_attribute_wrong_type_non_string","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"deduplication_attribute - Invalid value passed. Expected type: string, but got: int.","target":"basic_details","details":[{"target":"basic_details.deduplication_attribute","message":"deduplication_attribute - Invalid value passed. Expected type: string, but got: int."}]}}},"deduplication_attribute_not_supported_for_api_triggered":{"title":"deduplication_attribute_not_supported_for_api_triggered","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"deduplication_attribute is not supported for API_TRIGGERED campaigns","target":"basic_details","details":[{"target":"basic_details.deduplication_attribute","message":"deduplication_attribute is not supported for API_TRIGGERED campaigns"}]}}},"gmail_annotations_on_transactional":{"title":"gmail_annotations_on_transactional","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations","message":"gmail_annotations is not supported for TRANSACTIONAL content type. It is only supported for PROMOTIONAL campaigns."}]}}},"gmail_annotations_missing_sender_logo":{"title":"gmail_annotations_missing_sender_logo","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.sender_logo","message":"sender_logo is required when gmail_annotations is specified"}]}}},"gmail_annotations_invalid_sender_logo":{"title":"gmail_annotations_invalid_sender_logo","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.sender_logo","message":"sender_logo must be a valid https URL"}]}}},"gmail_annotations_deal_card_missing_field":{"title":"gmail_annotations_deal_card_missing_field","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.deal_card.availability_starts","message":"availability_starts is required when deal_card is specified"}]}}},"gmail_annotations_deal_card_invalid_end_time":{"title":"gmail_annotations_deal_card_invalid_end_time","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.deal_card","message":"End date and time must be a minimum of one hour later than the start date and time"}]}}},"gmail_annotations_product_carousel_minimum_products":{"title":"gmail_annotations_product_carousel_minimum_products","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel","message":"Product carousel requires a minimum of 2 products"}]}}},"gmail_annotations_product_set_product_count_exceeds_maximum":{"title":"gmail_annotations_product_set_product_count_exceeds_maximum","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel.product_set_data","message":"product_count must be between 2 and 9"}]}}},"gmail_annotations_product_carousel_invalid_original_price":{"title":"gmail_annotations_product_carousel_invalid_original_price","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products[0].original_price","message":"original_price must be a valid number"}]}}},"gmail_annotations_product_carousel_invalid_discount_value":{"title":"gmail_annotations_product_carousel_invalid_discount_value","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products[0].discount_value","message":"discount_value must be a valid number"}]}}},"gmail_annotations_product_carousel_invalid_promo_url":{"title":"gmail_annotations_product_carousel_invalid_promo_url","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products[0].promo_url","message":"promo_url must be a valid https URL"}]}}},"gmail_annotations_product_carousel_empty_product_image":{"title":"gmail_annotations_product_carousel_empty_product_image","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products[0].product_image","message":"product_image (Image URL) cannot be empty"}]}}},"gmail_annotations_product_carousel_invalid_product_image_url":{"title":"gmail_annotations_product_carousel_invalid_product_image_url","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel.manual_data.products[0].product_image","message":"product_image must be a valid https URL"}]}}},"gmail_annotations_product_set_not_found":{"title":"gmail_annotations_product_set_not_found","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel.product_set_data","message":"product_set not found for the given workspace"}]}}},"gmail_annotations_product_sets_feature_not_enabled":{"title":"gmail_annotations_product_sets_feature_not_enabled","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.gmail_annotations.product_carousel","message":"Product Sets is not enabled for this workspace"}]}}},"link_branding_domain_no_domain_configured":{"title":"link_branding_domain_no_domain_configured","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"link_branding_domain cannot be processed because no link branding domains have been configured for this workspace. Please set up a domain in your MoEngage dashboard settings first.","target":"campaign_content.content.email","details":[{"target":"campaign_content.content.email.link_branding_domain","message":"link_branding_domain cannot be processed because no link branding domains have been configured for this workspace."}]}}},"link_branding_domain_no_match":{"title":"link_branding_domain_no_match","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"The provided link_branding_domain does not match any of the configured domains for this workspace. Please verify the domain name and try again.","target":"campaign_content.content.email","details":[{"target":"campaign_content.content.email.link_branding_domain","message":"The provided link_branding_domain does not match any of the configured domains for this workspace."}]}}},"deep_link_domain_no_domain_configured":{"title":"deep_link_domain_no_domain_configured","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"deep_link_domain cannot be processed because no deep linking domains have been configured for this workspace. Please set up a domain in your MoEngage dashboard settings first.","target":"campaign_content.content.email","details":[{"target":"campaign_content.content.email.deep_link_domain","message":"deep_link_domain cannot be processed because no deep linking domains have been configured for this workspace."}]}}},"deep_link_domain_no_match":{"title":"deep_link_domain_no_match","value":{"response_id":"abc-101","error":{"code":"BAD_REQUEST","message":"The provided deep_link_domain does not match any of the configured domains for this workspace. Please verify the domain name and try again.","target":"campaign_content.content.email","details":[{"target":"campaign_content.content.email.deep_link_domain","message":"The provided deep_link_domain does not match any of the configured domains for this workspace."}]}}},"from_address_personalization_not_enabled":{"title":"from_address_personalization_not_enabled","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.from_address","message":"Personalized from_address is not supported for this workspace. Remove the personalization token, or ask support to enable EMAIL_FROM_ADDRESS_PERS."}]}}},"from_address_invalid_email":{"title":"from_address_invalid_email","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.from_address","message":"from_address is not a valid email address"}]}}},"reply_to_address_invalid_email":{"title":"reply_to_address_invalid_email","value":{"response_id":"abc-101","error":{"code":"VALIDATION_FAILED","message":"One or more fields failed validation.","details":[{"target":"campaign_content.content.email.reply_to_address","message":"reply_to_address is not a valid email address"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"4717a078-5fd4-412d-9ff7-d5a79fdda388":{"description":"Authentication failure.","content":{"application/json":{"schema":{"type":"object","properties":{"response_id":{"type":"string","description":"Unique identifier for this response. Echoes the request's `request_id` when one was supplied.","uniqueKey":"response_id","typeLabel":"string"},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code. Branch on this value rather than matching on `message`, which can change.","enum":["VALIDATION_FAILED","UNPROCESSABLE_ENTITY","BAD_REQUEST","RATE_LIMITED","UNAUTHORIZED","INTERNAL_ERROR","FORBIDDEN"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation of the failure, intended for logs and debugging.","uniqueKey":"error.message","typeLabel":"string"},"target":{"type":"string","description":"The request field or component the error applies to, when the failure can be attributed to one.","uniqueKey":"error.target","typeLabel":"string"},"details":{"type":"array","description":"Per-field breakdown, returned when more than one field failed validation.","items":{"type":"object","properties":{"target":{"type":"string","description":"The specific request field that failed validation.","uniqueKey":"error.details.items.[INDEX].target","typeLabel":"string"},"message":{"type":"string","description":"What failed for that field.","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"},"request_id":{"type":"string","description":"The `request_id` from the originating request. Use this to correlate a failed response back to the specific call that triggered it, particularly useful in high-volume or retry scenarios.\n\nIn V1, `request_id` appeared inside the `error` object. V5 preserves this field in the same location.\n","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"response_id":"abc-101","error":{"code":"UNAUTHORIZED","message":"Invalid or missing credentials.","details":[]}},"examples":{"Example":{"title":"Example","value":{"response_id":"abc-101","error":{"code":"UNAUTHORIZED","message":"Invalid or missing credentials.","details":[]}}}},"exampleType":"examples"}},"exampleType":"examples"},"37750498-b661-42e3-9e66-6470fddeb62e":{"description":"Per-app rate limit exceeded. Retry after the window indicated in `Retry-After` (seconds).","content":{"application/json":{"schema":{"type":"object","properties":{"response_id":{"type":"string","description":"Unique identifier for this response. Echoes the request's `request_id` when one was supplied.","uniqueKey":"response_id","typeLabel":"string"},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code. Branch on this value rather than matching on `message`, which can change.","enum":["VALIDATION_FAILED","UNPROCESSABLE_ENTITY","BAD_REQUEST","RATE_LIMITED","UNAUTHORIZED","INTERNAL_ERROR","FORBIDDEN"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation of the failure, intended for logs and debugging.","uniqueKey":"error.message","typeLabel":"string"},"target":{"type":"string","description":"The request field or component the error applies to, when the failure can be attributed to one.","uniqueKey":"error.target","typeLabel":"string"},"details":{"type":"array","description":"Per-field breakdown, returned when more than one field failed validation.","items":{"type":"object","properties":{"target":{"type":"string","description":"The specific request field that failed validation.","uniqueKey":"error.details.items.[INDEX].target","typeLabel":"string"},"message":{"type":"string","description":"What failed for that field.","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"},"request_id":{"type":"string","description":"The `request_id` from the originating request. Use this to correlate a failed response back to the specific call that triggered it, particularly useful in high-volume or retry scenarios.\n\nIn V1, `request_id` appeared inside the `error` object. V5 preserves this field in the same location.\n","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"response_id":"abc-101","error":{"code":"RATE_LIMITED","message":"Rate limit exceeded for app key.","details":[]}},"examples":{"Example":{"title":"Example","value":{"response_id":"abc-101","error":{"code":"RATE_LIMITED","message":"Rate limit exceeded for app key.","details":[]}}}},"exampleType":"examples"}},"exampleType":"examples"},"b1ad9ee8-1615-450b-840f-288b43d1e0f5":{"description":"Unhandled server-side failure.","content":{"application/json":{"schema":{"type":"object","properties":{"response_id":{"type":"string","description":"Unique identifier for this response. Echoes the request's `request_id` when one was supplied.","uniqueKey":"response_id","typeLabel":"string"},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code. Branch on this value rather than matching on `message`, which can change.","enum":["VALIDATION_FAILED","UNPROCESSABLE_ENTITY","BAD_REQUEST","RATE_LIMITED","UNAUTHORIZED","INTERNAL_ERROR","FORBIDDEN"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation of the failure, intended for logs and debugging.","uniqueKey":"error.message","typeLabel":"string"},"target":{"type":"string","description":"The request field or component the error applies to, when the failure can be attributed to one.","uniqueKey":"error.target","typeLabel":"string"},"details":{"type":"array","description":"Per-field breakdown, returned when more than one field failed validation.","items":{"type":"object","properties":{"target":{"type":"string","description":"The specific request field that failed validation.","uniqueKey":"error.details.items.[INDEX].target","typeLabel":"string"},"message":{"type":"string","description":"What failed for that field.","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"},"request_id":{"type":"string","description":"The `request_id` from the originating request. Use this to correlate a failed response back to the specific call that triggered it, particularly useful in high-volume or retry scenarios.\n\nIn V1, `request_id` appeared inside the `error` object. V5 preserves this field in the same location.\n","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"response_id":"abc-101","error":{"code":"INTERNAL_ERROR","message":"Internal server error.","details":[]}},"examples":{"Example":{"title":"Example","value":{"response_id":"abc-101","error":{"code":"INTERNAL_ERROR","message":"Internal server error.","details":[]}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"f45eafa4-aacf-46b1-ba0d-7a481982e829":{"BasicAuth":{"type":"http","scheme":"basic","description":"Authentication is done via Basic Auth. This requires a base64-encoded string of your credentials in the format `username:password`.\n\n- **Username**: Use your MoEngage Workspace ID (also known as the App ID). Find it in the MoEngage dashboard at **Settings** > **Account** > **API keys**.\n- **Password**: Use an API key from **Settings** > **Account** > **API keys**.\n\nRefer to [API Key Dashboard](/user-guide/settings/account/api-and-api-keys/api-key-dashboard) for details on creating and managing API keys.\n","scopes":[],"schemeName":"BasicAuth"}}},"servers":{"c798160a-ec8a-4114-8b25-ca19c258b222":{"url":"https://api-{dc}.moengage.com","description":"MoEngage Campaigns API Server","variables":{"dc":{"default":"01","description":"The 'dc' in the API Endpoint URL refers to the MoEngage Data Center (DC). MoEngage hosts each customer in a different DC. You can find your DC number and replace the value of 'dc' in the URL by referring to the DC and API endpoint mapping [here](/api/introduction#data-centers). Your MoEngage Data Center (DC) can be 01, 02, 03, 04, 05, 06, or 101.","enum":["01","02","03","04","05","06","101"]}}}},"schemas":{"934f3638-df01-43d4-b16e-fc48573f39bf":{"type":"object","description":"A group of filters combined with a logical operator.\n\nFor detailed segmentation payload and supported fields, refer to [Create Custom Segment](/api/filter-segments/create-filter-segment).\n","properties":{"filter_operator":{"type":"string","enum":["and","or"],"description":"The logical operator to combine filters."},"filters":{"type":"array","items":{"oneOf":[{"type":"object","title":"User attributes-based filters","description":"Filter based on user attributes.","properties":{"filter_type":{"type":"string","enum":["user_attributes"]},"data_type":{"type":"string","enum":["string","double","datetime","bool"],"description":"The data type of the attribute being filtered."},"category":{"type":"string","description":"The category of the attribute (e.g., \"Tracked Standard Attribute\")."},"name":{"type":"string","description":"The name of the attribute to filter on (e.g., \"uid\")."},"operator":{"type":"string","description":"The operator to use in the filter. Allowed values depend on data_type:\n- bool: is, exists\n- double: in, between, lessThan, greaterThan, exists\n- string: in, contains, containsInTheFollowing, startWithInTheFollowing, endsWithInTheFollowing, exists, is\n- datetime: inTheLast, on, between, before, after, inTheNext, exists, today\n"},"value":{"description":"The value to filter on (not required for 'exists' operator)."},"case_sensitive":{"type":"boolean","description":"Whether the filter comparison should be case-sensitive."},"negate":{"type":"boolean","description":"Whether to negate the filter condition."},"is_dynamic_value":{"type":"boolean","description":"When `true`, the filter value is treated as a dynamic expression and resolved at send time rather than evaluated as a literal string.\n\nSet this to `true` for Business Event-triggered campaigns where the filter value references a Business Event attribute, for example, `{{BusinessEventAttribute['season']}}`.\n"},"project_name":{"type":"string","description":"The name of the project associated with the user attributes.\n\n**Required** if the Portfolio feature is enabled in your workspace.\n"}}},{"type":"object","title":"Action-based filters (with or without attributes)","description":"Filter based on user actions/events. Use inside `segmentation_details.included_filters.filters` or `trigger_condition.included_filters.filters`.\n","properties":{"filter_type":{"type":"string","enum":["actions"]},"action_name":{"type":"string","description":"The name of the action/event to filter on."},"execution":{"type":"object","properties":{"type":{"type":"string","enum":["atleast","atmost","exactly"]},"count":{"type":"integer"}}},"executed":{"type":"boolean","description":"Whether the action was executed."},"attributes":{"oneOf":[{}]},"condition":{"type":"string","description":"The condition type. Must be passed as the string \"IF\"."}}},{"type":"object","title":"Custom segments","description":"Filter using a custom segment.","properties":{"filter_type":{"type":"string","enum":["custom_segments"]},"name":{"type":"string","description":"The name of the custom segment."},"id":{"type":"string","description":"The ID of the custom segment."}}}]},"description":"The list of filters to be combined using the filter operator.\n\nSupported filter types:\n- User attributes-based filters\n- Action-based filters (with or without attributes)\n- Custom segments\n"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"basic","description":"Authentication is done via Basic Auth. This requires a base64-encoded string of your credentials in the format `username:password`.\n\n- **Username**: Use your MoEngage Workspace ID (also known as the App ID). Find it in the MoEngage dashboard at **Settings** > **Account** > **API keys**.\n- **Password**: Use an API key from **Settings** > **Account** > **API keys**.\n\nRefer to [API Key Dashboard](/user-guide/settings/account/api-and-api-keys/api-key-dashboard) for details on creating and managing API keys.\n","scopes":[],"schemeName":"BasicAuth"},"schema":{"title":"Basic Auth","type":"object","description":"Authentication is done via Basic Auth. This requires a base64-encoded string of your credentials in the format `username:password`.\n\n- **Username**: Use your MoEngage Workspace ID (also known as the App ID). Find it in the MoEngage dashboard at **Settings** > **Account** > **API keys**.\n- **Password**: Use an API key from **Settings** > **Account** > **API keys**.\n\nRefer to [API Key Dashboard](/user-guide/settings/account/api-and-api-keys/api-key-dashboard) for details on creating and managing API keys.\n","isRequired":true,"properties":{"username":{"type":"string","uniqueKey":"username","isRequired":true,"typeLabel":"string","deprecated":false},"password":{"type":"string","uniqueKey":"password","isRequired":true,"typeLabel":"string","deprecated":false}},"additionalProperties":false,"deprecated":false},"schemeName":"BasicAuth","name":"Authorization"}],"title":"BasicAuth"}]},"originalFileLocation":"api/campaigns/campaign-draft.yaml"},"subdomain":"moengage","siteName":"MoEngage","title":"Create Campaign Draft (V5) - MoEngage","relatedPagesConfig":{"enabled":false,"limit":3,"mode":"manual"},"contextualStarterQuestions":[],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api/create-campaigns/create-campaign-draft-v5","matchLevel":0},"ja":{"href":"/ja/api/create-campaigns/create-campaign-draft-v5","matchLevel":1}}},"lastModified":"2026-11-13T09:04:55.095Z","originalFileLocation":"api/create-campaigns/create-campaign-draft-v5.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via PATCH /v5/campaigns/{campaign_id}.\">\u003cmeta data-mint-head name=\"application-name\" content=\"MoEngage\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Campaign Draft (V5) - MoEngage\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via PATCH /v5/campaigns/{campaign_id}.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MoEngage\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moengage.mintlify.site/docs/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+Campaign+Draft+%28V5%29\u0026amp;description=Creates+a+Push+or+Email+campaign+draft.+Content%2C+audience%2C+and+delivery+settings+can+be+included+at+the+time+of+creation%2C+or+added+later+via+%60PATCH+%2Fv5%2Fcampaign\u0026amp;theme=f5f8670d2a6207083c52605d\u0026amp;signature=f4819f2f7a920cd7ada9902e3a066ef38e08224509d29e601ae3493db436a7ae\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create Campaign Draft (V5) - MoEngage\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via PATCH /v5/campaigns/{campaign_id}.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moengage.mintlify.site/docs/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+Campaign+Draft+%28V5%29\u0026amp;description=Creates+a+Push+or+Email+campaign+draft.+Content%2C+audience%2C+and+delivery+settings+can+be+included+at+the+time+of+creation%2C+or+added+later+via+%60PATCH+%2Fv5%2Fcampaign\u0026amp;theme=f5f8670d2a6207083c52605d\u0026amp;signature=f4819f2f7a920cd7ada9902e3a066ef38e08224509d29e601ae3493db436a7ae\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MoEngage\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2E69FF\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"ICNaPDX9oefbF09W1b5_U9PDnlkyfyKSRbIap6_dW6o\">\u003clink data-mint-head rel=\"canonical\" href=\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api/create-campaigns/create-campaign-draft-v5.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://moengage.com/docs/ja/api/create-campaigns/create-campaign-draft-v5\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://moengage.com/#organization\",\"name\":\"MoEngage\",\"url\":\"https://moengage.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/moengage/VG5pJbeZsDUmdCZM/logo/light.svg?fit=max\u0026auto=format\u0026n=VG5pJbeZsDUmdCZM\u0026q=85\u0026s=28ca5909311cb6ffe01738e1503b5e64\"}},{\"@type\":\"WebSite\",\"@id\":\"https://moengage.com/docs#website\",\"name\":\"MoEngage\",\"url\":\"https://moengage.com/docs\",\"publisher\":{\"@id\":\"https://moengage.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5#webpage\",\"url\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5\",\"name\":\"Create Campaign Draft (V5)\",\"description\":\"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via PATCH /v5/campaigns/{campaign_id}.\",\"dateModified\":\"2026-11-13T09:04:55.095Z\",\"isPartOf\":{\"@id\":\"https://moengage.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://moengage.com/docs/api/data/data-overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Campaigns\",\"item\":\"https://moengage.com/docs/api/campaigns/campaign-draft-overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Campaigns\",\"item\":\"https://moengage.com/docs/api/campaigns/campaign-draft-overview\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Create Campaign Draft (V5)\",\"item\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5#apireference\",\"headline\":\"Create Campaign Draft (V5)\",\"name\":\"Create Campaign Draft (V5)\",\"description\":\"Creates a Push or Email campaign draft. Content, audience, and delivery settings can be included at the time of creation, or added later via PATCH /v5/campaigns/{campaign_id}.\",\"url\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5\",\"mainEntityOfPage\":{\"@id\":\"https://moengage.com/docs/api/create-campaigns/create-campaign-draft-v5#webpage\"},\"dateModified\":\"2026-11-13T09:04:55.095Z\",\"publisher\":{\"@id\":\"https://moengage.com/#organization\"},\"isPartOf\":{\"@id\":\"https://moengage.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MoEngage\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"MoEngage\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/api/create-campaigns/create-campaign-draft-v5.md","siteName":"MoEngage","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"User Guide","pages":[{"title":"User Guide","href":"/user-guide/introduction"}]},{"tab":"Developer Guide (SDKs)","pages":[{"title":"Developer Guide (SDKs)","href":"/developer-guide/introduction"}]},{"tab":"API Guide","groups":[{"group":"API Documentation","pages":[{"title":"API Documentation","sidebarTitle":"Overview","icon":"rocket","href":"/api/introduction"},{"group":"Authentication","icon":"key","pages":[{"group":"OAuth 2.0","pages":[{"title":"OAuth 2.0 Overview","icon":"file-magnifying-glass","href":"/api/oauth/oauth-overview"},{"title":"Generate Access Token","deprecated":null,"version":null,"openapi":"/api/oauth/oauth.yaml post /v1/oauth/token","href":"/api/oauth/generate-access-token"},{"title":"Refresh Access Token","deprecated":null,"version":null,"openapi":"/api/oauth/oauth.yaml post /v1/oauth/refresh","href":"/api/oauth/refresh-access-token"}]},{"title":"AWS STS Auth","href":"/api/aws-sts/aws-sts-overview"}]},{"title":"Rate Limits","icon":"gauge","href":"/api/rate-limits"}]},{"group":"Endpoints","icon":"code","pages":[{"group":"Data","icon":"database","pages":[{"title":"Data Overview","icon":"file-magnifying-glass","href":"/api/data/data-overview"},{"group":"User","icon":"user","pages":[{"title":"Track User","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /customer/{app_id}","href":"/api/user/track-user"},{"title":"Get User","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /customers/export","href":"/api/user/get-user"},{"title":"Merge Users","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /customer/merge","href":"/api/user/merge-users"},{"title":"Delete Users","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /customer/delete","href":"/api/user/delete-users"}]},{"group":"Event","icon":"calendar","pages":[{"title":"Track Event","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /event/{Workspace_ID}","href":"/api/event/track-event"}]},{"group":"Bulk","icon":"layer-group","pages":[{"title":"Bulk Import Users and Events","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /transition/{Workspace_ID}","href":"/api/bulk/bulk-import-users-and-events"}]},{"group":"Device","icon":"mobile","pages":[{"title":"Track Device","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /device/{app_id}","href":"/api/device/track-device"},{"title":"Device Opt-out","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /devices/manage","href":"/api/device/device-opt-out"}]},{"group":"File Import","icon":"file-import","pages":[{"title":"File Import Overview","icon":"file-magnifying-glass","href":"/api/data/file-import-overview"},{"title":"Trigger File Imports","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /fileimports/trigger/{schedule_id}","href":"/api/file-import/trigger-file-imports"},{"title":"Import Details","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /fileimports/import/status","href":"/api/file-import/import-details"},{"title":"Import File Run History","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /fileimports/import/run/history","href":"/api/file-import/import-file-run-history"}]},{"group":"Tracking","icon":"chart-line","pages":[{"title":"Track App Install","deprecated":null,"version":null,"openapi":"/api/data/data.yaml get /installInfo","href":"/api/tracking/track-app-install"}]},{"group":"Utilities","icon":"wrench","pages":[{"title":"Test Connection API","deprecated":null,"version":null,"openapi":"/api/data/data.yaml post /integrations/authentication","href":"/api/utilities/test-connection-api"}]},{"title":"Streams","icon":"webhook","href":"/api/data/moengage-streams"},{"group":"GDPR/CCPA","icon":"shield-check","pages":[{"title":"GDPR or CCPA Overview","icon":"file-magnifying-glass","href":"/api/gdpr-ccpa/gdpr-ccpa-overview"},{"title":"Submit a GDPR / CCPA Data Request","deprecated":null,"version":null,"openapi":"/api/gdpr-ccpa/gdpr-ccpa.yaml post /opengdpr_requests/{appId}","href":"/api/gdpr/submit-a-gdpr-ccpa-data-request"}]}]},{"group":"Business Events","icon":"calendar-check","pages":[{"group":"Business Events (V5)","icon":"bolt","pages":[{"title":"Business Events API (V5): Overview","icon":"bolt","href":"/api/business-events/business-events-v5/business-events-v5-overview"},{"title":"Trigger Business Event (V5)","deprecated":null,"version":null,"openapi":"/api/business-events/business-events-v5/business-events-v5.yaml post /v5/business-events/triggers","href":"/api/business-events/trigger-business-event-v5"},{"title":"List Business Events","deprecated":null,"version":null,"openapi":"/api/business-events/business-events-v5/business-events-v5.yaml get /v5/business-events","href":"/api/business-events/list-business-events"},{"title":"Search Business Events (V5)","deprecated":null,"version":null,"openapi":"/api/business-events/business-events-v5/business-events-v5.yaml post /v5/business-events/search","href":"/api/business-events/search-business-events-v5"}]},{"group":"Business Events (Legacy)","icon":"clock-rotate-left","pages":[{"title":"Business Events API (Legacy): Overview","icon":"clock-rotate-left","href":"/api/business-events/business-events-legacy/business-events-overview"},{"title":"Create Business Event","deprecated":null,"version":null,"openapi":"/api/business-events/business-events-legacy/business-events.yaml post /business_event","href":"/api/business-events/create-business-event"},{"title":"Trigger Business Event","deprecated":null,"version":null,"openapi":"/api/business-events/business-events-legacy/business-events.yaml post /business_event/trigger","href":"/api/business-events/trigger-business-event"},{"title":"Search Business Events","deprecated":null,"version":null,"openapi":"/api/business-events/business-events-legacy/business-events.yaml post /business_event/search","href":"/api/business-events/search-business-events"}]}]},{"group":"Content","icon":"file-lines","pages":[{"group":"Templates","icon":"rectangle-list","pages":[{"group":"Custom In-App Templates","icon":"mobile-screen","pages":[{"title":"In-app Templates Overview","icon":"file-magnifying-glass","href":"/api/in-app-templates/in-app-templates-overview"},{"title":"Create In-app Template","deprecated":null,"version":null,"openapi":"/api/in-app-templates/in-app-templates.yaml post /custom-templates/inapp","href":"/api/in-app-templates/create-in-app-template"},{"title":"Update In-app Template","deprecated":null,"version":null,"openapi":"/api/in-app-templates/in-app-templates.yaml put /custom-templates/inapp","href":"/api/in-app-templates/update-in-app-template"},{"title":"Search In-app Templates","deprecated":null,"version":null,"openapi":"/api/in-app-templates/in-app-templates.yaml post /custom-templates/inapp/search","href":"/api/in-app-templates/search-in-app-templates"}]},{"group":"Custom OSM Templates","icon":"window-restore","pages":[{"title":"OSM Templates Overview","icon":"file-magnifying-glass","href":"/api/osm-templates/osm-templates-overview"},{"title":"Create OSM Template","deprecated":null,"version":null,"openapi":"/api/osm-templates/osm-templates.yaml post /custom-templates/osm","href":"/api/osm-templates/create-osm-template"},{"title":"Update OSM Template","deprecated":null,"version":null,"openapi":"/api/osm-templates/osm-templates.yaml put /custom-templates/osm","href":"/api/osm-templates/update-osm-template"},{"title":"Search OSM Templates","deprecated":null,"version":null,"openapi":"/api/osm-templates/osm-templates.yaml post /custom-templates/osm/search","href":"/api/osm-templates/search-osm-templates"}]},{"group":"Custom SMS Templates","icon":"comment-sms","pages":[{"title":"SMS Templates Overview","icon":"file-magnifying-glass","href":"/api/sms-templates/sms-templates-overview"},{"title":"Create SMS Template","deprecated":null,"version":null,"openapi":"/api/sms-templates/sms-templates.yaml post /custom-templates/sms","href":"/api/sms-templates/create-sms-template"},{"title":"Update SMS Template","deprecated":null,"version":null,"openapi":"/api/sms-templates/sms-templates.yaml put /custom-templates/sms","href":"/api/sms-templates/update-sms-template"},{"title":"Search SMS Templates","deprecated":null,"version":null,"openapi":"/api/sms-templates/sms-templates.yaml post /custom-templates/sms/search","href":"/api/sms-templates/search-sms-templates"}]},{"group":"Custom Email Templates V1","icon":"envelope-open-text","pages":[{"title":"Email Templates (V1) Overview","icon":"file-magnifying-glass","href":"/api/email-templates-1/email-templates-1-overview"},{"title":"Create Email Template (V1)","deprecated":null,"version":null,"openapi":"/api/email-templates-1/email-templates-1.yaml post /email-templates","href":"/api/email-templates/create-email-template-v1"},{"title":"Get All Templates","deprecated":null,"version":null,"openapi":"/api/email-templates-1/email-templates-1.yaml get /email-templates","href":"/api/email-templates/get-all-templates"},{"title":"Get Specific Template","deprecated":null,"version":null,"openapi":"/api/email-templates-1/email-templates-1.yaml get /email-templates/{id}","href":"/api/email-templates/get-specific-template"},{"title":"Update Specific Template","deprecated":null,"version":null,"openapi":"/api/email-templates-1/email-templates-1.yaml put /email-templates/{id}","href":"/api/email-templates/update-specific-template"},{"title":"Bulk Create/Update Templates","deprecated":null,"version":null,"openapi":"/api/email-templates-1/email-templates-1.yaml put /bulk/email-templates","href":"/api/email-templates/bulk-createupdate-templates"}]},{"group":"Custom Email Templates V2","icon":"envelope","pages":[{"title":"Email Templates (V2) Overview","icon":"file-magnifying-glass","href":"/api/email-templates-2/email-templates-2-overview"},{"title":"Create Email Template (V2)","deprecated":null,"version":null,"openapi":"/api/email-templates-2/email-templates-2.yaml post /custom-templates/email","href":"/api/email-templates/create-email-template-v2"},{"title":"Search Email Template","deprecated":null,"version":null,"openapi":"/api/email-templates-2/email-templates-2.yaml post /custom-templates/email/search","href":"/api/email-templates/search-email-template"},{"title":"Update Email Template","deprecated":null,"version":null,"openapi":"/api/email-templates-2/email-templates-2.yaml put /custom-templates/email","href":"/api/email-templates/update-email-template"}]},{"group":"Custom Push Templates","icon":"bell","pages":[{"title":"Push Templates Overview","icon":"file-magnifying-glass","href":"/api/push-templates/push-templates-overview"},{"title":"Create Push Template","deprecated":null,"version":null,"openapi":"/api/push-templates/push-templates.yaml post /custom-templates/push","href":"/api/templates/create-push-template"},{"title":"Update Push Template","deprecated":null,"version":null,"openapi":"/api/push-templates/push-templates.yaml put /custom-templates/push","href":"/api/templates/update-push-template"},{"title":"Search for Push Templates","deprecated":null,"version":null,"openapi":"/api/push-templates/push-templates.yaml post /custom-templates/push/search","href":"/api/templates/search-for-push-templates"}]}]},{"group":"Content Blocks","icon":"cubes","pages":[{"title":"Content Blocks Overview","icon":"file-magnifying-glass","href":"/api/content-blocks/content-blocks-overview"},{"title":"Create Content Block","deprecated":null,"version":null,"openapi":"/api/content-blocks/content-blocks.yaml post /content-blocks","href":"/api/content-blocks/create-content-block"},{"title":"Update Content Block","deprecated":null,"version":null,"openapi":"/api/content-blocks/content-blocks.yaml put /content-blocks","href":"/api/content-blocks/update-content-block"},{"title":"Get Specific Content Blocks","deprecated":null,"version":null,"openapi":"/api/content-blocks/content-blocks.yaml post /content-blocks/get-by-ids","href":"/api/content-blocks/get-specific-content-blocks"},{"title":"Search Content Blocks","deprecated":null,"version":null,"openapi":"/api/content-blocks/content-blocks.yaml post /content-blocks/search","href":"/api/content-blocks/search-content-blocks"}]},{"group":"Content APIs","icon":"plug","pages":[{"title":"Content APIs Overview","icon":"file-magnifying-glass","href":"/api/content-apis/content-apis-overview"},{"title":"List Content APIs","deprecated":null,"version":null,"openapi":"/api/content-apis/content-apis.yaml get /v5/content-apis","href":"/api/content-apis/list-content-apis"},{"title":"Test Content API","deprecated":null,"version":null,"openapi":"/api/content-apis/content-apis.yaml post /v5/content-apis/{id}/test","href":"/api/content-apis/test-content-api"}]},{"group":"Locales","icon":"language","pages":[{"title":"Locales Overview","icon":"file-magnifying-glass","href":"/api/locales/locales-overview"},{"title":"List Locales","deprecated":null,"version":null,"openapi":"/api/locales/locales.yaml get /v5/locales","href":"/api/locales/list-locales"}]},{"group":"Recommendations","icon":"wand-magic-sparkles","pages":[{"title":"Recommendations Overview","icon":"file-magnifying-glass","href":"/api/recommendations/recommendations-overview"},{"title":"Fetch All Recommendations","deprecated":null,"version":null,"openapi":"/api/recommendations/recommendations.yaml get /recommendations","href":"/api/recommendations/fetch-all-recommendations"},{"title":"Fetch Recommendation Details","deprecated":null,"version":null,"openapi":"/api/recommendations/recommendations.yaml get /recommendations/{recommendation_id}","href":"/api/recommendations/fetch-recommendation-details"},{"title":"Fetch Recommendation Results","deprecated":null,"version":null,"openapi":"/api/recommendations/recommendations.yaml post /recommendations/{recommendation_id}/items","href":"/api/recommendations/fetch-recommendation-results"}]},{"group":"Coupons","icon":"ticket","pages":[{"title":"Coupon Management Overview","icon":"file-magnifying-glass","href":"/api/coupons/coupons-overview"},{"title":"Create a Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml post /coupon-list","href":"/api/coupon-lists/create-a-coupon-list"},{"title":"Fetch All Coupon Lists","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml get /coupon-list","href":"/api/coupon-lists/fetch-all-coupon-lists"},{"title":"Fetch Coupon List Details","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml get /coupon-list/{coupon_list_id}","href":"/api/coupon-lists/fetch-coupon-list-details"},{"title":"Update a Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml patch /coupon-list/{coupon_list_id}","href":"/api/coupon-lists/update-a-coupon-list"},{"title":"Activate Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml put /coupon-list/{coupon_list_id}/activate","href":"/api/coupon-lists/activate-coupon-list"},{"title":"Archive a Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml put /coupon-list/{coupon_list_id}/archive","href":"/api/coupon-lists/archive-a-coupon-list"},{"title":"Upload a Coupon File to the Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml post /coupon-list/{coupon_list_id}/files","href":"/api/coupon-files/upload-a-coupon-file-to-the-coupon-list"},{"title":"Fetch All Coupon Files From Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml get /coupon-list/{coupon_list_id}/files","href":"/api/coupon-files/fetch-all-coupon-files-from-coupon-list"},{"title":"Fetch a Coupon File from Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml get /coupon-list/{coupon_list_id}/files/{coupon_file_id}","href":"/api/coupon-files/fetch-a-coupon-file-from-coupon-list"},{"title":"Delete a Coupon File from the Coupon List","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml delete /coupon-list/{coupon_list_id}/files/{coupon_file_id}","href":"/api/coupon-files/delete-a-coupon-file-from-the-coupon-list"},{"title":"Generate Usage Report","deprecated":null,"version":null,"openapi":"/api/coupons/coupons.yaml post /coupon-list/{coupon_list_id}/usage-report","href":"/api/reports/generate-usage-report"}]},{"group":"Catalog","icon":"box","pages":[{"title":"Catalog Overview","icon":"file-magnifying-glass","href":"/api/catalog/catalog-overview"},{"title":"Create Catalog","deprecated":null,"version":null,"openapi":"/api/catalog/catalog.yaml post /catalog","href":"/api/catalog/create-catalog"},{"title":"Add Catalog Attributes","deprecated":null,"version":null,"openapi":"/api/catalog/catalog.yaml patch /catalog/{catalog_id}/attributes","href":"/api/catalog/add-catalog-attributes"},{"title":"Add Items","deprecated":null,"version":null,"openapi":"/api/catalog/catalog.yaml post /catalog/{catalog_id}/items","href":"/api/items/add-items"},{"title":"Get Items","deprecated":null,"version":null,"openapi":"/api/catalog/catalog.yaml post /catalog/{catalog_id}/items/search","href":"/api/items/get-items"},{"title":"Update Items","deprecated":null,"version":null,"openapi":"/api/catalog/catalog.yaml patch /catalog/{catalog_id}/items","href":"/api/items/update-items"},{"title":"Delete Items","deprecated":null,"version":null,"openapi":"/api/catalog/catalog.yaml post /catalog/{catalog_id}/items/bulk-delete","href":"/api/items/delete-items"}]}]},{"group":"Flows","icon":"diagram-project","pages":[{"title":"Flows Overview","href":"/api/flows/flows-overview"},{"title":"Search Flows","deprecated":null,"version":null,"openapi":"/api/flows/flows.yaml post /v5/flows/search","href":"/api/flows/search-flows"},{"title":"Get a Single Flow","deprecated":null,"version":null,"openapi":"/api/flows/flows.yaml get /v5/flows/{flow_id}","href":"/api/flows/get-a-single-flow"},{"title":"Get a Specific Version of a Flow","deprecated":null,"version":null,"openapi":"/api/flows/flows.yaml get /v5/flows/{flow_id}/versions/{version_id}","href":"/api/flows/get-a-specific-version-of-a-flow"},{"title":"Update Flow Status","deprecated":null,"version":null,"openapi":"/api/flows/flows.yaml patch /v5/flows/{flow_id}/status","href":"/api/flows/update-flow-status"}]},{"group":"Offerings","icon":"gift","pages":[{"title":"Offerings Overview","icon":"gift","href":"/api/offerings/offerings-overview"},{"title":"List Offerings","deprecated":null,"version":null,"openapi":"/api/offerings/offerings.yaml get /v5/offers","href":"/api/public-offerings/list-offerings"},{"title":"Get Offering","deprecated":null,"version":null,"openapi":"/api/offerings/offerings.yaml get /v5/offers/{offer_id}","href":"/api/public-offerings/get-offering"},{"title":"Create Offering","deprecated":null,"version":null,"openapi":"/api/offerings/offerings.yaml post /v5/offers","href":"/api/public-offerings/create-offering"},{"title":"Update Offering","deprecated":null,"version":null,"openapi":"/api/offerings/offerings.yaml patch /v5/offers/{offer_id}","href":"/api/public-offerings/update-offering"},{"title":"List Offer Templates","deprecated":null,"version":null,"openapi":"/api/offerings/offerings.yaml get /v5/offers/templates","href":"/api/public-offerings/list-offer-templates"},{"title":"Get Offer Template","deprecated":null,"version":null,"openapi":"/api/offerings/offerings.yaml get /v5/offers/templates/{template_id}","href":"/api/public-offerings/get-offer-template"}]},{"group":"Campaigns","icon":"paper-plane","pages":[{"group":"Campaigns","icon":"file-pen","pages":[{"title":"Campaigns Overview","description":"Use the MoEngage Campaigns API to create, update, test, and manage campaigns programmatically. V5 supports campaign creation for Push and Email, with search, retrieval, and personalized preview available for SMS and other channels.","icon":"file-magnifying-glass","href":"/api/campaigns/campaign-draft-overview"},{"title":"Create Campaign Draft (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns","href":"/api/create-campaigns/create-campaign-draft-v5"},{"title":"Campaign content reference","description":"Reference for basic_details and campaign_content per channel, platform, and template type. Used by the Create Campaign and Update Campaign endpoints.","icon":"layout-template","href":"/api/campaigns/campaign-content-reference"},{"title":"Audience and delivery reference","icon":"users-viewfinder","href":"/api/campaigns/audience-scheduling-delivery-reference"},{"title":"Get Campaign (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml get /v5/campaigns/{campaign_id}","href":"/api/get-campaign-details/get-campaign-v5"},{"title":"Update Campaign (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml patch /v5/campaigns/{campaign_id}","href":"/api/update-campaigns/update-campaign-v5"},{"title":"Validate Campaign (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns/{campaign_id}/validate","href":"/api/create-campaigns/validate-campaign-v5"},{"title":"Update Campaign Status (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml patch /v5/campaigns/{campaign_id}/status","href":"/api/update-campaigns/update-campaign-status-v5"},{"title":"Search Campaigns (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns/search","href":"/api/get-campaign-details/search-campaigns-v5"},{"title":"Test Campaign (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns/test","href":"/api/test-campaigns/test-campaign-v5"},{"title":"Get Campaign Meta (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns/meta","href":"/api/get-campaign-details/get-campaign-meta-v5"},{"title":"Personalized Preview (V5)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/personalizations/previews","href":"/api/personalized-preview/personalized-preview-v5"}]},{"group":"Campaigns (Legacy)","icon":"paper-plane","pages":[{"title":"Campaigns (Legacy) Overview","icon":"file-magnifying-glass","href":"/api/campaigns/campaigns-overview"},{"title":"Create Campaign","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml post /campaigns","href":"/api/create-campaigns/create-campaign"},{"title":"Update Campaign (V1 — Legacy)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml patch /campaigns/{campaign_id}","href":"/api/update-campaigns/update-campaign-v1-—-legacy"},{"title":"Search Campaigns","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml post /campaigns/search","href":"/api/get-campaign-details/search-campaigns"},{"title":"V1 vs. V5 Search Campaigns: Behavioral Differences","href":"/api/campaigns/search-campaigns-v5-migration"},{"title":"Test Campaign","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml post /campaigns/test","href":"/api/test-campaigns/test-campaign"},{"title":"Personalized Preview","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml post /personalization/preview","href":"/api/test-campaigns/personalized-preview"},{"title":"Get Campaign Meta (V1 — Legacy)","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml post /campaigns/meta","href":"/api/get-campaign-details/get-campaign-meta-v1-—-legacy"},{"title":"Change Campaign Status","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml post /campaigns/status","href":"/api/update-campaigns/change-campaign-status"},{"title":"Get Child Campaigns","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml post /campaigns/{parent_campaign_id}/executions","href":"/api/get-campaign-details/get-child-campaigns"},{"title":"Update Global Control Group","deprecated":null,"version":null,"openapi":"/api/campaigns/campaigns.yaml put /global-control-group/users","href":"/api/update-campaigns/update-global-control-group"}]},{"group":"Campaign Report and Stats","icon":"chart-bar","pages":[{"title":"Campaign Stats and Reports Overview","icon":"file-magnifying-glass","href":"/api/stats-report/stats-report-overview"},{"title":"Get Campaign Stats","deprecated":null,"version":null,"openapi":"/api/stats-report/stats-report.yaml post /core-services/v1/campaign-stats","href":"/api/stats/get-campaign-stats"},{"title":"Download Campaign Report","deprecated":null,"version":null,"openapi":"/api/stats-report/stats-report.yaml get /campaign_reports/rest_api/{APP_ID}/{FILENAME}","href":"/api/campaign-reports/download-campaign-report"}]}]},{"group":"Messaging","icon":"envelope","pages":[{"title":"Messaging API Overview","icon":"envelope","href":"/api/messaging/messaging-api-overview"},{"title":"Trigger Message","deprecated":null,"version":null,"openapi":"/api/campaigns/campaign-draft.yaml post /v5/campaigns/{campaign_id}/send","href":"/api/trigger/trigger-message"}]},{"group":"Analyze","icon":"chart-line","tag":"NEW","pages":[{"group":"Dashboards","icon":"objects-column","pages":[{"title":"Custom Dashboards Overview","icon":"file-magnifying-glass","href":"/api/analytics/analytics-overview"},{"title":"List Dashboards","deprecated":null,"version":null,"openapi":"/api/analytics/analytics.yaml get /v5/analytics/dashboards","href":"/api/dashboards/list-dashboards"},{"title":"Get Dashboard Charts","deprecated":null,"version":null,"openapi":"/api/analytics/analytics.yaml get /v5/analytics/dashboards/{dashboard_id}/charts","href":"/api/dashboards/get-dashboard-charts"},{"title":"Get Chart Data","deprecated":null,"version":null,"openapi":"/api/analytics/analytics.yaml get /v5/analytics/dashboards/{dashboard_id}/charts/{chart_id}","href":"/api/dashboards/get-chart-data"}]},{"group":"Analytics","icon":"chart-mixed","pages":[{"title":"Analytics Query APIs Overview","icon":"chart-mixed","href":"/api/analytics-query/analytics-query-overview"},{"title":"Register a Behavior Query","deprecated":null,"version":null,"openapi":"/api/analytics-query/analytics-query.yaml post /v5/analytics/behavior","href":"/api/analytics-queries/register-a-behavior-query"},{"title":"Register a Funnels Query","deprecated":null,"version":null,"openapi":"/api/analytics-query/analytics-query.yaml post /v5/analytics/funnels","href":"/api/analytics-queries/register-a-funnels-query"},{"title":"Register a Retention Query","deprecated":null,"version":null,"openapi":"/api/analytics-query/analytics-query.yaml post /v5/analytics/retention","href":"/api/analytics-queries/register-a-retention-query"},{"title":"Register a Session-Source Query","deprecated":null,"version":null,"openapi":"/api/analytics-query/analytics-query.yaml post /v5/analytics/session-source","href":"/api/analytics-queries/register-a-session-source-query"},{"title":"Register a User Analysis Query","deprecated":null,"version":null,"openapi":"/api/analytics-query/analytics-query.yaml post /v5/analytics/user-analysis","href":"/api/analytics-queries/register-a-user-analysis-query"},{"title":"Get Query Status","deprecated":null,"version":null,"openapi":"/api/analytics-query/analytics-query.yaml get /v5/analytics/query/{request_id}/status","href":"/api/analytics-queries/get-query-status"},{"title":"Get Query Results","deprecated":null,"version":null,"openapi":"/api/analytics-query/analytics-query.yaml get /v5/analytics/query/{request_id}/results","href":"/api/analytics-queries/get-query-results"}]}]},{"group":"Segments","icon":"users","pages":[{"title":"Segments Overview","icon":"file-magnifying-glass","href":"/api/custom-segments/custom-segments-overview"},{"group":"File Segments","icon":"file-csv","pages":[{"title":"Create File Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml post /v2/custom-segments/file-segment","href":"/api/file-segments/create-file-segment"},{"title":"Add Users to File Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml put /v2/custom-segments/file-segment/add-users","href":"/api/file-segments/add-users-to-file-segment"},{"title":"Remove Users from File Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml put /v2/custom-segments/file-segment/remove-users","href":"/api/file-segments/remove-users-from-file-segment"},{"title":"Replace Users from File Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml put /v2/custom-segments/file-segment/replace","href":"/api/file-segments/replace-users-from-file-segment"}]},{"group":"Filter Segments","icon":"filter","pages":[{"title":"List Segments","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml get /v3/custom-segments","href":"/api/filter-segments/list-segments"},{"title":"Create Filter Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml post /v3/custom-segments","href":"/api/filter-segments/create-filter-segment"},{"title":"Get Segment by ID","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml get /v3/custom-segments/{id}","href":"/api/filter-segments/get-segment-by-id"},{"title":"Update Filter Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml patch /v3/custom-segments/{id}","href":"/api/filter-segments/update-filter-segment"}]},{"group":"Cohort Sync","icon":"users-gear","pages":[{"title":"Sync Cohort Members","deprecated":null,"version":null,"openapi":"/api/cohort-audience/cohort-audience.yaml post /v1/integrations/cohortsync","href":"/api/cohort-sync/sync-cohort-members"}]},{"group":"Manage Segments","icon":"sliders","pages":[{"title":"Archive Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml patch /v2/custom-segments/archive","href":"/api/manage-segments/archive-segment"},{"title":"Unarchive Segment","deprecated":null,"version":null,"openapi":"/api/custom-segments/custom-segments.yaml patch /v2/custom-segments/unarchive","href":"/api/manage-segments/unarchive-segment"}]}]},{"group":"Subscriptions","icon":"envelope-circle-check","pages":[{"group":"Email Subscription","icon":"envelope","pages":[{"title":"Email Subscription Overview","icon":"file-magnifying-glass","href":"/api/email-subscription/email-subscription-overview"},{"title":"Bulk Resubscribe Users","deprecated":null,"version":null,"openapi":"/api/email-subscription/email-subscription.yaml post /emails/v1.0/bulk-resubscribe","href":"/api/resubscribe/bulk-resubscribe-users"},{"title":"Update User Email Opt-in Preferences","deprecated":null,"version":null,"openapi":"/api/email-subscription/email-subscription.yaml put /v1.0/opt-in-management/user-preferences","href":"/api/opt-in-management/update-user-email-opt-in-preferences"}]},{"group":"Subscription Categories","icon":"list-check","pages":[{"group":"Subscription Categories (V5)","pages":[{"title":"Subscription Categories (V5)","icon":"file-magnifying-glass","href":"/api/subscription-categories/subscription-categories-v5/subscription-categories-overview-v5"},{"title":"Get Subscription Categories (V5)","deprecated":null,"version":null,"openapi":"/api/subscription-categories/subscription-categories-v5/subscription-categories-v5.yaml get /v5/subscription-categories","href":"/api/subscription-categories/get-subscription-categories-v5"},{"title":"Get Subscription Preferences (V5)","deprecated":null,"version":null,"openapi":"/api/subscription-categories/subscription-categories-v5/subscription-categories-v5.yaml get /v5/subscription-preferences","href":"/api/subscription-preferences/get-subscription-preferences-v5"},{"title":"Update Subscription Preferences (V5)","deprecated":null,"version":null,"openapi":"/api/subscription-categories/subscription-categories-v5/subscription-categories-v5.yaml patch /v5/subscription-preferences","href":"/api/subscription-preferences/update-subscription-preferences-v5"}]},{"group":"Subscription Categories (Legacy)","pages":[{"title":"Subscription Categories (Legacy)","icon":"file-magnifying-glass","href":"/api/subscription-categories/subscription-categories-legacy/subscription-categories-overview-legacy"},{"title":"Get Subscription Preferences","deprecated":null,"version":null,"openapi":"/api/subscription-categories/subscription-categories-legacy/subscription-categories-legacy.yaml get /category-subscription/user-preferences","href":"/api/subscription-preferences/get-subscription-preferences"},{"title":"Update Subscription Preferences","deprecated":null,"version":null,"openapi":"/api/subscription-categories/subscription-categories-legacy/subscription-categories-legacy.yaml put /category-subscription/user-preferences","href":"/api/subscription-preferences/update-subscription-preferences"},{"title":"Bulk Update Subscription Preferences","deprecated":null,"version":null,"openapi":"/api/subscription-categories/subscription-categories-legacy/subscription-categories-legacy.yaml post /category-subscription/user-preferences","href":"/api/subscription-preferences/bulk-update-subscription-preferences"}]}]}]},{"group":"Push","icon":"bell","pages":[{"title":"Push Overview","icon":"file-magnifying-glass","href":"/api/push/push-overview"},{"title":"Push API (V5)","openapi":"api/push/push-v5.yaml POST /v5/push/notifications","href":"/api/push/push-api"},{"title":"Push API (v2.1, Legacy)","openapi":"api/push/push-v2-1.yaml POST /v2.1/transaction/sendpush","href":"/api/push/push-api-v2-1-legacy"},{"title":"Push API (v2, Legacy)","openapi":"api/push/push.yaml POST /transaction/sendpush","href":"/api/push/push-api-v2-legacy"}]},{"group":"Cards","icon":"rectangle-history","pages":[{"title":"Cards Overview","icon":"file-magnifying-glass","href":"/api/cards/cards-overview"},{"title":"Fetch Cards for User","deprecated":null,"version":null,"openapi":"/api/cards/cards.yaml post /cards/fetch","href":"/api/cards/fetch-cards-for-user"},{"title":"Delete Cards for User","deprecated":null,"version":null,"openapi":"/api/cards/cards.yaml delete /cards/delete","href":"/api/cards/delete-cards-for-user"}]},{"group":"Inform","icon":"message","pages":[{"title":"Inform Overview","icon":"file-magnifying-glass","href":"/api/inform/inform-overview"},{"title":"Send Transactional Alert","deprecated":null,"version":null,"openapi":"/api/inform/inform.yaml post /alerts/send","href":"/api/transactional-alerts/send-transactional-alert"}]},{"group":"Live Activities","icon":"circle-play","pages":[{"title":"Live Activities Overview","icon":"file-magnifying-glass","href":"/api/live-activities/live-activities-overview"},{"title":"Start Broadcast Live Activity","deprecated":null,"version":null,"openapi":"/api/live-activities/live-activities.yaml post /live-activity/broadcast/start","href":"/api/live-activities/start-broadcast-live-activity"},{"title":"Update Broadcast Live Activity","deprecated":null,"version":null,"openapi":"/api/live-activities/live-activities.yaml post /live-activity/broadcast/update","href":"/api/live-activities/update-broadcast-live-activity"},{"title":"End Broadcast Live Activity","deprecated":null,"version":null,"openapi":"/api/live-activities/live-activities.yaml post /live-activity/broadcast/end","href":"/api/live-activities/end-broadcast-live-activity"}]},{"group":"Personalize","icon":"bullseye-arrow","pages":[{"title":"Personalize Overview","icon":"file-magnifying-glass","href":"/api/personalize-experience/personalize-overview"},{"title":"Fetch Experience","deprecated":null,"version":null,"openapi":"/api/personalize-experience/personalize-experience.yaml post /experiences/fetch","href":"/api/experiences/fetch-experience"},{"title":"Fetch Experience Metadata","deprecated":null,"version":null,"openapi":"/api/personalize-experience/personalize-experience.yaml get /experiences/metadata","href":"/api/experiences/fetch-experience-metadata"},{"title":"Track Experience Events","deprecated":null,"version":null,"openapi":"/api/personalize-experience/personalize-experience.yaml post /experiences/events","href":"/api/events/track-experience-events"}]},{"group":"Message Archival","icon":"box-archive","pages":[{"title":"Message Archival Overview","icon":"file-magnifying-glass","href":"/api/message-archival/message-archival-overview"},{"title":"View Archived Message","deprecated":null,"version":null,"openapi":"/api/message-archival/message-archival.yaml post /archival/view","href":"/api/message-archival/view-archived-message"}]}]}]},{"tab":"AI \u0026 Intelligence","pages":[{"title":"AI \u0026 Intelligence","href":"/user-guide/ai-and-intelligence/overview"}]},{"tab":"Partner Integrations","pages":[{"title":"Partner Integrations","href":"/partner-guide/introduction"}]},{"tab":"Use Cases","pages":[{"title":"Use Cases","href":"/use-cases/introduction"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/subscribe-to-release-notes"}]}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/api/create-campaigns/create-campaign-draft-v5"}]}]},"basePath":"","title":"Create Campaign Draft (V5) - MoEngage","buildId":"dpl_eBQnj73Q1gDRVNqNsS3Yt9yPkTEW","deploymentId":"dpl_eBQnj73Q1gDRVNqNsS3Yt9yPkTEW","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-2eIonhLG.js","utils-Bu4fD7MA.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-Dm0-6XnC.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-75RmY7ol.js","snippetPresets-CNg6Wglv.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-jSmPd6im.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CVrruHci.js","shallow-CebqfoNv.js","getApiPlaygroundDisplay-D2ytr59n.js","CodeSnippet-BVCHzyUV.js","CodeSnippets-C72k541i.js","Page-eOxp8mNS.js","getPastedJson-B0F9LVjA.js","icon-CGCgkOos.js","MethodPill-WJKpFOMR.js","DuplicateIcon-Dv5CTyCp.js","createIcon-B8Xc2y5i.js","DynamicMarkdown-CAm7Qzqi.js","SectionHeading-ACCZHDy_.js","axios-vUo_bRtp.js","Markdown-CHuW7TET.js","clsx-BhkiUDTS.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CNS0fiKw.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-D2_8dbQZ.js"]}