Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account’s default Billing Method.
Required fields:
name - display name of the Campaign (must be unique within the Company)
accountId - the Account this Campaign belongs to
customization - Gift Customization configuration (giftProperties, notificationPolicy, optionally recipientExperience)
Optional parameters:
Request-Source header - source of the request (api_native, api_zapier, api_salesforce, api_ftp, api_make)
Behavior Notes:
Returns 201 with the new Campaign on success.
Campaigns created via the API are always created with type: oneOffs. Other Campaign types (anniversary, birthday, schedule, marketing, newHire) can only be created through the Snappy Dashboard.
Returns 409 when a Campaign with the same name already exists in the Company.
Campaign customization defines the entire gift recipient experience.
It includes budget parameters, collection or product selection, expiration settings, notification methods, and visual presentation elements that create a cohesive branded experience.
Show child attributes
Response
Campaign created successfully
Campaign details including configuration and customization.
Campaign customization defines the entire gift recipient experience.
It includes budget parameters, collection or product selection, expiration settings, notification methods, and visual presentation elements that create a cohesive branded experience.
Show child attributes
Last modified on June 17, 2026
Was this page helpful?
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Snappy API Docs","description":"Developer documentation for the Snappy API - authenticate, send gifts at scale, manage campaigns, and integrate webhooks into your platform.","colors":{"primary":"#3077C9","light":"#97BBE4","dark":"#012754"},"logo":{"light":"https://mintcdn.com/snappy-32aaf7de/mts3uwPRgvWZUmQ7/images/SNA_Primary_Navy.svg?fit=max\u0026auto=format\u0026n=mts3uwPRgvWZUmQ7\u0026q=85\u0026s=b8a23414e2c9f00b6607cca6445784e8","dark":"https://mintcdn.com/snappy-32aaf7de/mts3uwPRgvWZUmQ7/images/CopyofSNA_Primary_White1.svg?fit=max\u0026auto=format\u0026n=mts3uwPRgvWZUmQ7\u0026q=85\u0026s=556a73e4dc4ad48b8cb6cc6ada9639eb"},"favicon":{"light":"https://mintcdn.com/snappy-32aaf7de/-gcFSFXA9UKYE60q/images/favicon.svg?fit=max\u0026auto=format\u0026n=-gcFSFXA9UKYE60q\u0026q=85\u0026s=b74778bfb17f68133baf41d1fd96bb36","dark":"https://mintcdn.com/snappy-32aaf7de/-gcFSFXA9UKYE60q/images/favicon.svg?fit=max\u0026auto=format\u0026n=-gcFSFXA9UKYE60q\u0026q=85\u0026s=b74778bfb17f68133baf41d1fd96bb36"},"api":{"openapi":["modules/src/generated-openapi.public.yml","modules/src/generated-openapi-v3.public.yml"]},"navbar":{"links":[],"primary":{"type":"button","label":"Reach out","href":"https://www.snappy.com/book-meeting"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/snappy-app","instagram":"https://www.instagram.com/snappygifts","facebook":"https://www.facebook.com/snappygifts","website":"https://www.snappy.com/"}},"seo":{"indexing":"navigable"},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Open Sans"}},"styling":{"eyebrows":"section","latex":false},"errors":{"404":{"redirect":true,"description":"The page you're looking for doesn't exist. Try the [Quickstart](/pages/quickstart), browse the API Reference, or use the search bar above."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"snappy-32aaf7de","hasAudioNarration":false,"actualSubdomain":"snappy-32aaf7de","customDomains":["docs.snappy.com"],"gitSource":{"type":"github","owner":"snappygifts","repo":"public-api-service","deployBranch":"master","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9e79005f836676fde6c98","collectionId":"8580b53a-b49a-4990-837a-841f39c310e4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9e79005f836676fde6c98"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae9e79005f836676fde6c98","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":92},{"language":"default","tag":"V3 (Latest)","count":47},{"language":"default","tag":"V2","count":45},{"language":"default","tag":"Gifting","count":36},{"language":"default","tag":"Marketplace","count":30},{"language":"default","tag":"Orders","count":15},{"language":"default","tag":"Get started","count":14},{"language":"default","tag":"Guides","count":12},{"language":"default","tag":"Administration","count":11},{"language":"default","tag":"Collections","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"llms-txt-v2","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":"vite-origin","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":"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}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"modules/api/v2/campaigns/create-campaign","slug":"/modules/api/v2/campaigns/create-campaign","pageMetadata":{"title":"Create campaign","openapi":"post /v2/campaigns","description":"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account's default Billing Method.\n\n###### Required fields:\n- `name` - display name of the Campaign (must be unique within the Company)\n- `accountId` - the Account this Campaign belongs to\n- `customization` - Gift Customization configuration (`giftProperties`, `notificationPolicy`, optionally `recipientExperience`)\n\n###### Optional parameters:\n- `Request-Source` header - source of the request (`api_native`, `api_zapier`, `api_salesforce`, `api_ftp`, `api_make`)\n\n###### Behavior Notes:\n- Returns `201` with the new Campaign on success.\n- Campaigns created via the API are always created with `type: oneOffs`. Other Campaign types (`anniversary`, `birthday`, `schedule`, `marketing`, `newHire`) can only be created through the Snappy Dashboard.\n- Returns `409` when a Campaign with the same name already exists in the Company.\n- Returns `422` for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization).\n\n#### Permissions\n- Requires: `campaigns:create`","href":"/modules/api/v2/campaigns/create-campaign"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h4: \"h4\",\n h6: \"h6\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account’s default Billing Method.\"\n }), \"\\n\", _jsx(_components.h6, {\n children: \"Required fields:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"name\"\n }), \" - display name of the Campaign (must be unique within the Company)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"accountId\"\n }), \" - the Account this Campaign belongs to\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"customization\"\n }), \" - Gift Customization configuration (\", _jsx(_components.code, {\n children: \"giftProperties\"\n }), \", \", _jsx(_components.code, {\n children: \"notificationPolicy\"\n }), \", optionally \", _jsx(_components.code, {\n children: \"recipientExperience\"\n }), \")\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h6, {\n children: \"Optional parameters:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"Request-Source\"\n }), \" header - source of the request (\", _jsx(_components.code, {\n children: \"api_native\"\n }), \", \", _jsx(_components.code, {\n children: \"api_zapier\"\n }), \", \", _jsx(_components.code, {\n children: \"api_salesforce\"\n }), \", \", _jsx(_components.code, {\n children: \"api_ftp\"\n }), \", \", _jsx(_components.code, {\n children: \"api_make\"\n }), \")\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h6, {\n children: \"Behavior Notes:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Returns \", _jsx(_components.code, {\n children: \"201\"\n }), \" with the new Campaign on success.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Campaigns created via the API are always created with \", _jsx(_components.code, {\n children: \"type: oneOffs\"\n }), \". Other Campaign types (\", _jsx(_components.code, {\n children: \"anniversary\"\n }), \", \", _jsx(_components.code, {\n children: \"birthday\"\n }), \", \", _jsx(_components.code, {\n children: \"schedule\"\n }), \", \", _jsx(_components.code, {\n children: \"marketing\"\n }), \", \", _jsx(_components.code, {\n children: \"newHire\"\n }), \") can only be created through the Snappy Dashboard.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Returns \", _jsx(_components.code, {\n children: \"409\"\n }), \" when a Campaign with the same name already exists in the Company.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Returns \", _jsx(_components.code, {\n children: \"422\"\n }), \" for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n children: \"Permissions\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Requires: \", _jsx(_components.code, {\n children: \"campaigns:create\"\n })]\n }), \"\\n\"]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create campaign","openapi":"post /v2/campaigns","description":"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account's default Billing Method.\n\n###### Required fields:\n- `name` - display name of the Campaign (must be unique within the Company)\n- `accountId` - the Account this Campaign belongs to\n- `customization` - Gift Customization configuration (`giftProperties`, `notificationPolicy`, optionally `recipientExperience`)\n\n###### Optional parameters:\n- `Request-Source` header - source of the request (`api_native`, `api_zapier`, `api_salesforce`, `api_ftp`, `api_make`)\n\n###### Behavior Notes:\n- Returns `201` with the new Campaign on success.\n- Campaigns created via the API are always created with `type: oneOffs`. Other Campaign types (`anniversary`, `birthday`, `schedule`, `marketing`, `newHire`) can only be created through the Snappy Dashboard.\n- Returns `409` when a Campaign with the same name already exists in the Company.\n- Returns `422` for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization).\n\n#### Permissions\n- Requires: `campaigns:create`","href":"/modules/api/v2/campaigns/create-campaign"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createCampaign","tags":["Campaigns"],"summary":"Create campaign","description":"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account's default Billing Method.\n\n###### Required fields:\n- `name` - display name of the Campaign (must be unique within the Company)\n- `accountId` - the Account this Campaign belongs to\n- `customization` - Gift Customization configuration (`giftProperties`, `notificationPolicy`, optionally `recipientExperience`)\n\n###### Optional parameters:\n- `Request-Source` header - source of the request (`api_native`, `api_zapier`, `api_salesforce`, `api_ftp`, `api_make`)\n\n###### Behavior Notes:\n- Returns `201` with the new Campaign on success.\n- Campaigns created via the API are always created with `type: oneOffs`. Other Campaign types (`anniversary`, `birthday`, `schedule`, `marketing`, `newHire`) can only be created through the Snappy Dashboard.\n- Returns `409` when a Campaign with the same name already exists in the Company.\n- Returns `422` for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization).\n\n#### Permissions\n- Requires: `campaigns:create`","security":["48da4605-8bb5-4372-a94a-3f7b2cfdb3ed","284d0d78-9c1b-4b03-b171-32f1436d0226"],"parameters":["32f7ab73-d82b-46fb-9b4d-303d093ac085"],"requestBody":"8a06a695-d959-4e5c-875b-791156df36a4","responses":{"201":"4f6fd12a-5ee5-49a3-8751-631eecc13c0d","400":"136154a2-ab8e-4a6b-b60f-ce6c53deb32b","401":"ba149459-8fcc-4a02-ba5f-dc9fa4cb6111","403":"2371564a-eb7b-4be0-abda-4baeacc899f6","409":"af4dfad6-480e-438e-a338-763225ca4e29","422":"dfe62b8b-dd72-49d4-85f8-b49e56a6f1fc"},"method":"post","type":"path","servers":["1f7ead17-6160-4972-87e6-98b65f7453c1","2cb6fbb2-b4f6-4068-8394-aa2eea9f61d7"],"path":"/v2/campaigns","baseUrlOptions":["https://api.snappy.com/public-api","https://mtls-api.snappy.com/public-api"],"title":"Create campaign","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"32f7ab73-d82b-46fb-9b4d-303d093ac085":{"schema":{"type":"string","enum":["api_native","api_zapier","api_salesforce","api_ftp","api_make"],"description":"Source of the request","example":"api_native","isRequired":false,"uniqueKey":"","typeLabel":"enum\u003cstring>"},"required":false,"description":"Source of the request","name":"Request-Source","in":"header"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the campaign","example":"My Campaign","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"accountId":{"type":"string","description":"The account ID this campaign belongs to","example":"a12bcd34","isRequired":true,"uniqueKey":"accountId","typeLabel":"string"},"customization":{"type":"object","properties":{"giftProperties":{"type":"array","items":{"type":"object","properties":{"selectedGiftType":{"type":"string","enum":["collection","product"],"description":"The type of gift selection","isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].selectedGiftType","typeLabel":"enum\u003cstring>"},"budget":{"type":"object","properties":{"max":{"type":"number","minimum":1,"maximum":20000,"description":"Maximum budget allowed for gifts (between 1-20,000)","example":100,"isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].budget.max","typeLabel":"number"},"min":{"type":"number","minimum":1,"maximum":10000,"description":"Minimum budget allowed for gifts (between 1-10,000)","example":76,"uniqueKey":"customization.giftProperties.items.[INDEX].budget.min","typeLabel":"number"}},"required":["max"],"additionalProperties":false,"description":"Budget constraints for gifts","example":{"max":100,"min":76},"uniqueKey":"customization.giftProperties.items.[INDEX].budget","typeLabel":"object"},"expiration":{"type":"object","properties":{"type":{"type":"string","enum":["unlimited","specificDate","daysFromSend"],"default":"unlimited","description":"Type of expiration","example":"daysFromSend","uniqueKey":"customization.giftProperties.items.[INDEX].expiration.type","typeLabel":"enum\u003cstring>"},"date":{"type":"string","format":"date-time","description":"Required when type is specificDate, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].expiration.date","typeLabel":"string\u003cdate-time>"},"numberOfDays":{"type":"number","minimum":1,"maximum":365,"description":"Required when type is daysFromSend, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].expiration.numberOfDays","typeLabel":"number"}},"additionalProperties":false,"description":"Flexible expiration options let you set a specific end date, number of days from sending, or unlimited usage period.\nThis helps manage campaign relevance and encourages timely recipient action while maintaining control over your gifting program timeline.","example":{"type":"daysFromSend","numberOfDays":30},"uniqueKey":"customization.giftProperties.items.[INDEX].expiration","typeLabel":"object"},"guaranteedGift":{"type":"object","properties":{"type":{"type":"string","enum":["specificDate","daysFromSend"],"description":"Type of guaranteed gift expiration","example":"daysFromSend","isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift.type","typeLabel":"enum\u003cstring>"},"date":{"type":"string","format":"date-time","description":"Required when type is specificDate, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift.date","typeLabel":"string\u003cdate-time>"},"numberOfDays":{"type":"number","minimum":1,"maximum":365,"description":"Required when type is daysFromSend, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift.numberOfDays","typeLabel":"number"}},"required":["type"],"additionalProperties":false,"description":"Flexible guaranteed gift options mirror campaign expiration settings and allow specific date or days from send configuration.","example":{"type":"daysFromSend","numberOfDays":30},"uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift","typeLabel":"object"},"collection":{"type":"object","properties":{"id":{"type":"string","description":"The id of the collection.","example":"12345678","uniqueKey":"customization.giftProperties.items.[INDEX].collection.id","typeLabel":"string"},"featuredProducts":{"type":"array","items":{"type":"string","uniqueKey":"customization.giftProperties.items.[INDEX].collection.featuredProducts.items.[INDEX]","typeLabel":"string"},"description":"The ids of the featured products.","example":["12345678"],"uniqueKey":"customization.giftProperties.items.[INDEX].collection.featuredProducts","typeLabel":"string[]"}},"additionalProperties":false,"description":"Collection configuration for campaign gifts.\nRequired when selectedGiftType is collection, otherwise not allowed.","example":{"id":"12345678","featuredProducts":["12345678"]},"uniqueKey":"customization.giftProperties.items.[INDEX].collection","typeLabel":"object"},"product":{"type":"object","properties":{"id":{"type":"string","description":"The id of the product.","example":"12345678","isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].product.id","typeLabel":"string"},"displayType":{"type":"string","enum":["displayAsSurprise","displayProduct"],"default":"displayProduct","example":"displayAsSurprise","uniqueKey":"customization.giftProperties.items.[INDEX].product.displayType","typeLabel":"enum\u003cstring>"}},"required":["id"],"additionalProperties":false,"description":"Product configuration for campaign gifts.\nRequired when selectedGiftType is product, otherwise not allowed.","example":{"id":"12345678","displayType":"displayAsSurprise"},"uniqueKey":"customization.giftProperties.items.[INDEX].product","typeLabel":"object"}},"required":["selectedGiftType"],"uniqueKey":"customization.giftProperties.items.[INDEX]","typeLabel":"object"},"minItems":1,"description":"Array of gift property configurations","isRequired":true,"uniqueKey":"customization.giftProperties","typeLabel":"object[]"},"notificationPolicy":{"type":"object","properties":{"sendingChannels":{"type":"array","items":{"type":"string","enum":["mail","sms","link","code","slack","teams"],"description":"The sending channels of the gift.","example":"mail","uniqueKey":"customization.notificationPolicy.sendingChannels.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["mail"],"description":"The sending channels for notifying recipients about their gift.","uniqueKey":"customization.notificationPolicy.sendingChannels","typeLabel":"enum\u003cstring>[]"},"disableReminders":{"type":"boolean","description":"Whether reminder notifications are disabled","uniqueKey":"customization.notificationPolicy.disableReminders","typeLabel":"boolean"}},"description":"Notification settings control how recipients are informed about their gift - via email, SMS, link sharing or other channels.\nAlso manages reminder behavior to optimize engagement rates.","isRequired":true,"uniqueKey":"customization.notificationPolicy","typeLabel":"object"},"recipientExperience":{"type":"object","description":"Defines the interactive journey recipients experience when receiving your gift - from the initial unwrapping animation to greeting message presentation and delivery address collection process.","example":{"type":"enterAddress","visualElements":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000"},"greeting":{"content":{"ops":[{"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}]}}},"postClaim":{"redirectAfterClaim":"https://example.com/redirect"}}},"properties":{"type":{"type":"string","enum":["enterAddress"],"description":"The type of recipient experience.\nCurrently, we support 'enterAddress' type.\nIn the future, we plan to support the 'ship to address' feature and will add another type.","example":"enterAddress","uniqueKey":"customization.recipientExperience.type","typeLabel":"enum\u003cstring>"},"visualElements":{"type":"object","description":"Visual elements of recipient experience.","required":["reveal","greeting"],"example":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}},"greeting":{"content":{"ops":[{"attributes":{"font":"pacifico"},"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}}}},"properties":{"reveal":{"type":"object","description":"The reveal animation creates an emotional moment of surprise.\nChoose the animation type, color scheme, and branded elements to personalize the recipient's first impression and enhance gift anticipation.","required":["type","primaryColor","secondaryColor"],"example":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}},"properties":{"type":{"type":"string","description":"Type of reveal experience.","enum":["noReveal","snowGlobe","snowMan","pinata","boxTap","growingPlant","mountainClimbMask","elegantBoxMask","newHireMask","casinoMachineMask","anniversaryBottleMask","happyBirthdayMask","newbornEggMask","nostalgiaMask","cozyHolidayMask","thanksgivingMask","customImageScratch","brandScratch","customVideo","specialDeliveryMask","newYearMask","appreciationDayMask","magicalMask","thinkingOfYouMask","winterKnittingMask","starMask","winterTrainMask"],"example":"snowGlobe","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.type","typeLabel":"enum\u003cstring>"},"primaryColor":{"type":"string","description":"Primary color of reveal experience.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.primaryColor","typeLabel":"string\u003chex>"},"secondaryColor":{"type":"string","description":"Secondary color of reveal experience.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.secondaryColor","typeLabel":"string\u003chex>"},"mediaItems":{"type":"object","description":"Media items of reveal experience.","example":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]},"properties":{"background":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background.items.[INDEX]","typeLabel":"object"},"maxItems":1,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background","typeLabel":"object[]"},"logo":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo.items.[INDEX]","typeLabel":"object"},"maxItems":1,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal","typeLabel":"object"},"greeting":{"type":"object","description":"A personalized greeting with customizable fonts, colors, and media elements.\nCraft an emotional message that accompanies your gift and conveys your sentiment to the recipient.","required":["content","banner"],"example":{"content":{"ops":[{"attributes":{"font":"pacifico"},"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}}},"properties":{"content":{"type":"object","description":"Quill formatted JSON with ops array and any additional properties.","required":["ops"],"example":{"ops":[{"attributes":{"font":"pacifico"},"insert":"Happy Birthday!"}],"customProperty":"customValue"},"properties":{"ops":{"type":"array","items":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops.items.[INDEX]","typeLabel":"object | null"},"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops","typeLabel":"(object | null)[]"}},"additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties.oneOf.1","typeLabel":"null"},{"type":"null","uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties.oneOf.2","typeLabel":"null"},{"type":"null","uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties","typeLabel":"null"},"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content","typeLabel":"object"},"banner":{"type":"object","description":"The banner serves as the main visual element of the gift page.\nCustomize background, logo, text, and colors to create a unique branded experience.","required":["text","color","mediaItems"],"example":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}},"properties":{"text":{"type":"string","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.text","typeLabel":"string"},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.color","typeLabel":"string"},"mediaItems":{"type":"object","description":"Media items of banner.","required":["background"],"example":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]},"properties":{"background":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background.items.[INDEX]","typeLabel":"object"},"maxItems":1,"minItems":0,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background","typeLabel":"object[]"},"logo":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo.items.[INDEX]","typeLabel":"object"},"maxItems":1,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo","typeLabel":"object[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements","typeLabel":"object"},"postClaim":{"type":"object","properties":{"redirectAfterClaim":{"type":"string","format":"uri","description":"URL to direct to after the recipient claims the gift.","example":"https://example.com/redirect","isRequired":true,"uniqueKey":"customization.recipientExperience.postClaim.redirectAfterClaim","typeLabel":"string\u003curi>"}},"required":["redirectAfterClaim"],"additionalProperties":false,"description":"An object defining the customizations in the postClaim step.","example":{"redirectAfterClaim":"https://example.com/redirect"},"uniqueKey":"customization.recipientExperience.postClaim","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience","typeLabel":"object"}},"required":["giftProperties","notificationPolicy"],"description":"Campaign customization defines the entire gift recipient experience.\nIt includes budget parameters, collection or product selection, expiration settings, notification methods, and visual presentation elements that create a cohesive branded experience.","isRequired":true,"uniqueKey":"customization","typeLabel":"object"}},"required":["name","accountId","customization"],"additionalProperties":false,"description":"Request body for creating a campaign.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"My Campaign","accountId":"a12bcd34","customization":{"giftProperties":[{"budget":{"max":100,"min":76},"expiration":{"type":"daysFromSend","numberOfDays":30},"guaranteedGift":{"type":"daysFromSend","numberOfDays":30},"collection":{"id":"12345678","featuredProducts":["12345678"]},"product":{"id":"12345678","displayType":"displayAsSurprise"}}],"notificationPolicy":{"sendingChannels":["mail"],"disableReminders":true},"recipientExperience":{"type":"enterAddress","visualElements":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000"},"greeting":{"content":{"ops":[{"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}]}}},"postClaim":{"redirectAfterClaim":"https://example.com/redirect"}}}}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"4f6fd12a-5ee5-49a3-8751-631eecc13c0d":{"description":"Campaign created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The id of the campaign.","example":"abcd1234","uniqueKey":"id","typeLabel":"string"},"createdAt":{"type":"string","description":"The date when the campaign was created.","example":"2021-01-01T00:00:00.000Z","uniqueKey":"createdAt","typeLabel":"string"},"updatedAt":{"type":"string","description":"The date when the campaign was last updated.","example":"2021-01-01T00:00:00.000Z","uniqueKey":"updatedAt","typeLabel":"string"},"name":{"type":"string","description":"The name of the campaign.","example":"Campaign Name","uniqueKey":"name","typeLabel":"string"},"accountId":{"type":"string","description":"The id of the account.","example":"a12bcd34","uniqueKey":"accountId","typeLabel":"string"},"companyId":{"type":"string","description":"The id of the company.","example":"A1b2C3d4","uniqueKey":"companyId","typeLabel":"string"},"status":{"type":"string","enum":["live","sent","draft","paused","pending","scheduled","archived","active"],"description":"The status of the campaign.","example":"draft","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"source":{"type":"string","enum":["dashboard","dashboard_ai","api_native","api_zapier","api_make","api_salesforce","api_ftp"],"description":"The source of the campaign.","example":"api_native","uniqueKey":"source","typeLabel":"enum\u003cstring>"},"account":{"type":"object","properties":{"id":{"type":"string","description":"The id of the account.","example":"a12bcd34","isRequired":true,"uniqueKey":"account.id","typeLabel":"string"},"name":{"type":"string","description":"The name of the account.","example":"Account Name","isRequired":true,"uniqueKey":"account.name","typeLabel":"string"}},"required":["id","name"],"description":"The account of the campaign.","uniqueKey":"account","typeLabel":"object"},"type":{"type":"string","enum":["anniversary","birthday","schedule","marketing","oneOffs","newHire"],"description":"The type of the campaign.\nvalid values are: anniversary, birthday, schedule, marketing, oneOffs, newHire.","example":"oneOffs","uniqueKey":"type","typeLabel":"enum\u003cstring>"},"giftsExpirationInDays":{"type":"number","deprecated":true,"description":"The number of days until the gifts will expire.\nThe default value is 30 days.","example":30,"uniqueKey":"giftsExpirationInDays","typeLabel":"number"},"giftExpirationDate":{"type":"string","deprecated":true,"description":"The date when the gift will expire.\nDate Format: YYYY-MM-DDThh:mm:ss.sZ.","uniqueKey":"giftExpirationDate","typeLabel":"string"},"properties":{"type":"array","items":{"type":"object","properties":{"budget":{"type":"number","description":"The budget of the campaign.","example":100,"isRequired":true,"uniqueKey":"properties.items.[INDEX].budget","typeLabel":"number"},"collection":{"type":"object","properties":{"id":{"type":"string","description":"The id of the collection.","example":"abcdef12","isRequired":true,"uniqueKey":"properties.items.[INDEX].collection.id","typeLabel":"string"},"name":{"type":"string","description":"The name of the collection.","example":"Collection Name","isRequired":true,"uniqueKey":"properties.items.[INDEX].collection.name","typeLabel":"string"},"defaultCountry":{"type":"string","description":"The default country of the collection.\nThe default country is used to calculate the estimated cost of the gift.","example":"US","isRequired":true,"uniqueKey":"properties.items.[INDEX].collection.defaultCountry","typeLabel":"string"}},"required":["id","name","defaultCountry"],"description":"The collection of the campaign.","uniqueKey":"properties.items.[INDEX].collection","typeLabel":"object"}},"required":["budget"],"uniqueKey":"properties.items.[INDEX]","typeLabel":"object"},"description":"The properties of the campaign.","deprecated":true,"uniqueKey":"properties","typeLabel":"object[]"},"customization":{"type":"object","properties":{"giftProperties":{"type":"array","items":{"type":"object","properties":{"selectedGiftType":{"type":"string","enum":["collection","product"],"description":"The type of gift selection","isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].selectedGiftType","typeLabel":"enum\u003cstring>"},"budget":{"type":"object","properties":{"max":{"type":"number","minimum":1,"maximum":20000,"description":"Maximum budget allowed for gifts (between 1-20,000)","example":100,"isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].budget.max","typeLabel":"number"},"min":{"type":"number","minimum":1,"maximum":10000,"description":"Minimum budget allowed for gifts (between 1-10,000)","example":76,"uniqueKey":"customization.giftProperties.items.[INDEX].budget.min","typeLabel":"number"}},"required":["max"],"additionalProperties":false,"description":"Budget constraints for gifts","example":{"max":100,"min":76},"uniqueKey":"customization.giftProperties.items.[INDEX].budget","typeLabel":"object"},"expiration":{"type":"object","properties":{"type":{"type":"string","enum":["unlimited","specificDate","daysFromSend"],"default":"unlimited","description":"Type of expiration","example":"daysFromSend","uniqueKey":"customization.giftProperties.items.[INDEX].expiration.type","typeLabel":"enum\u003cstring>"},"date":{"type":"string","format":"date-time","description":"Required when type is specificDate, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].expiration.date","typeLabel":"string\u003cdate-time>"},"numberOfDays":{"type":"number","minimum":1,"maximum":365,"description":"Required when type is daysFromSend, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].expiration.numberOfDays","typeLabel":"number"}},"additionalProperties":false,"description":"Flexible expiration options let you set a specific end date, number of days from sending, or unlimited usage period.\nThis helps manage campaign relevance and encourages timely recipient action while maintaining control over your gifting program timeline.","example":{"type":"daysFromSend","numberOfDays":30},"uniqueKey":"customization.giftProperties.items.[INDEX].expiration","typeLabel":"object"},"guaranteedGift":{"type":"object","properties":{"type":{"type":"string","enum":["specificDate","daysFromSend"],"description":"Type of guaranteed gift expiration","example":"daysFromSend","isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift.type","typeLabel":"enum\u003cstring>"},"date":{"type":"string","format":"date-time","description":"Required when type is specificDate, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift.date","typeLabel":"string\u003cdate-time>"},"numberOfDays":{"type":"number","minimum":1,"maximum":365,"description":"Required when type is daysFromSend, otherwise not allowed","uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift.numberOfDays","typeLabel":"number"}},"required":["type"],"additionalProperties":false,"description":"Flexible guaranteed gift options mirror campaign expiration settings and allow specific date or days from send configuration.","example":{"type":"daysFromSend","numberOfDays":30},"uniqueKey":"customization.giftProperties.items.[INDEX].guaranteedGift","typeLabel":"object"},"collection":{"type":"object","properties":{"id":{"type":"string","description":"The id of the collection.","example":"12345678","uniqueKey":"customization.giftProperties.items.[INDEX].collection.id","typeLabel":"string"},"featuredProducts":{"type":"array","items":{"type":"string","uniqueKey":"customization.giftProperties.items.[INDEX].collection.featuredProducts.items.[INDEX]","typeLabel":"string"},"description":"The ids of the featured products.","example":["12345678"],"uniqueKey":"customization.giftProperties.items.[INDEX].collection.featuredProducts","typeLabel":"string[]"}},"additionalProperties":false,"description":"Collection configuration for campaign gifts.\nRequired when selectedGiftType is collection, otherwise not allowed.","example":{"id":"12345678","featuredProducts":["12345678"]},"uniqueKey":"customization.giftProperties.items.[INDEX].collection","typeLabel":"object"},"product":{"type":"object","properties":{"id":{"type":"string","description":"The id of the product.","example":"12345678","isRequired":true,"uniqueKey":"customization.giftProperties.items.[INDEX].product.id","typeLabel":"string"},"displayType":{"type":"string","enum":["displayAsSurprise","displayProduct"],"default":"displayProduct","example":"displayAsSurprise","uniqueKey":"customization.giftProperties.items.[INDEX].product.displayType","typeLabel":"enum\u003cstring>"}},"required":["id"],"additionalProperties":false,"description":"Product configuration for campaign gifts.\nRequired when selectedGiftType is product, otherwise not allowed.","example":{"id":"12345678","displayType":"displayAsSurprise"},"uniqueKey":"customization.giftProperties.items.[INDEX].product","typeLabel":"object"}},"required":["selectedGiftType"],"uniqueKey":"customization.giftProperties.items.[INDEX]","typeLabel":"object"},"minItems":1,"description":"Array of gift property configurations","isRequired":true,"uniqueKey":"customization.giftProperties","typeLabel":"object[]"},"notificationPolicy":{"type":"object","properties":{"sendingChannels":{"type":"array","items":{"type":"string","enum":["mail","sms","link","code","slack","teams"],"description":"The sending channels of the gift.","example":"mail","uniqueKey":"customization.notificationPolicy.sendingChannels.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["mail"],"description":"The sending channels for notifying recipients about their gift.","uniqueKey":"customization.notificationPolicy.sendingChannels","typeLabel":"enum\u003cstring>[]"},"disableReminders":{"type":"boolean","description":"Whether reminder notifications are disabled","uniqueKey":"customization.notificationPolicy.disableReminders","typeLabel":"boolean"}},"description":"Notification settings control how recipients are informed about their gift - via email, SMS, link sharing or other channels.\nAlso manages reminder behavior to optimize engagement rates.","isRequired":true,"uniqueKey":"customization.notificationPolicy","typeLabel":"object"},"recipientExperience":{"type":"object","description":"Defines the interactive journey recipients experience when receiving your gift - from the initial unwrapping animation to greeting message presentation and delivery address collection process.","example":{"type":"enterAddress","visualElements":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000"},"greeting":{"content":{"ops":[{"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}]}}},"postClaim":{"redirectAfterClaim":"https://example.com/redirect"}}},"properties":{"type":{"type":"string","enum":["enterAddress"],"description":"The type of recipient experience.\nCurrently, we support 'enterAddress' type.\nIn the future, we plan to support the 'ship to address' feature and will add another type.","example":"enterAddress","uniqueKey":"customization.recipientExperience.type","typeLabel":"enum\u003cstring>"},"visualElements":{"type":"object","description":"Visual elements of recipient experience.","required":["reveal","greeting"],"example":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}},"greeting":{"content":{"ops":[{"attributes":{"font":"pacifico"},"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}}}},"properties":{"reveal":{"type":"object","description":"The reveal animation creates an emotional moment of surprise.\nChoose the animation type, color scheme, and branded elements to personalize the recipient's first impression and enhance gift anticipation.","required":["type","primaryColor","secondaryColor"],"example":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}},"properties":{"type":{"type":"string","description":"Type of reveal experience.","enum":["noReveal","snowGlobe","snowMan","pinata","boxTap","growingPlant","mountainClimbMask","elegantBoxMask","newHireMask","casinoMachineMask","anniversaryBottleMask","happyBirthdayMask","newbornEggMask","nostalgiaMask","cozyHolidayMask","thanksgivingMask","customImageScratch","brandScratch","customVideo","specialDeliveryMask","newYearMask","appreciationDayMask","magicalMask","thinkingOfYouMask","winterKnittingMask","starMask","winterTrainMask"],"example":"snowGlobe","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.type","typeLabel":"enum\u003cstring>"},"primaryColor":{"type":"string","description":"Primary color of reveal experience.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.primaryColor","typeLabel":"string\u003chex>"},"secondaryColor":{"type":"string","description":"Secondary color of reveal experience.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.secondaryColor","typeLabel":"string\u003chex>"},"mediaItems":{"type":"object","description":"Media items of reveal experience.","example":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]},"properties":{"background":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background.items.[INDEX]","typeLabel":"object"},"maxItems":1,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.background","typeLabel":"object[]"},"logo":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo.items.[INDEX]","typeLabel":"object"},"maxItems":1,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems.logo","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.reveal.mediaItems","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal","typeLabel":"object"},"greeting":{"type":"object","description":"A personalized greeting with customizable fonts, colors, and media elements.\nCraft an emotional message that accompanies your gift and conveys your sentiment to the recipient.","required":["content","banner"],"example":{"content":{"ops":[{"attributes":{"font":"pacifico"},"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}}},"properties":{"content":{"type":"object","description":"Quill formatted JSON with ops array and any additional properties.","required":["ops"],"example":{"ops":[{"attributes":{"font":"pacifico"},"insert":"Happy Birthday!"}],"customProperty":"customValue"},"properties":{"ops":{"type":"array","items":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops.items.[INDEX]","typeLabel":"object | null"},"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.ops","typeLabel":"(object | null)[]"}},"additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties.oneOf.1","typeLabel":"null"},{"type":"null","uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties.oneOf.2","typeLabel":"null"},{"type":"null","uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"customization.recipientExperience.visualElements.greeting.content.additionalProperties","typeLabel":"null"},"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.content","typeLabel":"object"},"banner":{"type":"object","description":"The banner serves as the main visual element of the gift page.\nCustomize background, logo, text, and colors to create a unique branded experience.","required":["text","color","mediaItems"],"example":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]}},"properties":{"text":{"type":"string","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.text","typeLabel":"string"},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.color","typeLabel":"string"},"mediaItems":{"type":"object","description":"Media items of banner.","required":["background"],"example":{"background":[{"type":"image","url":"https://example.com/image.jpg"}],"logo":[{"type":"image","url":"https://example.com/image.jpg"}]},"properties":{"background":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background.items.[INDEX]","typeLabel":"object"},"maxItems":1,"minItems":0,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.background","typeLabel":"object[]"},"logo":{"type":"array","items":{"type":"object","description":"Media item object.","required":["type","url"],"example":{"type":"image","url":"https://example.com/image.jpg"},"properties":{"type":{"type":"string","description":"Type of media item.","enum":["image","video"],"example":"image","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"URL of the media item.","format":"uri","example":"https://example.com/image.jpg","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo.items.[INDEX].url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo.items.[INDEX]","typeLabel":"object"},"maxItems":1,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems.logo","typeLabel":"object[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner.mediaItems","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting.banner","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.greeting","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience.visualElements","typeLabel":"object"},"postClaim":{"type":"object","properties":{"redirectAfterClaim":{"type":"string","format":"uri","description":"URL to direct to after the recipient claims the gift.","example":"https://example.com/redirect","isRequired":true,"uniqueKey":"customization.recipientExperience.postClaim.redirectAfterClaim","typeLabel":"string\u003curi>"}},"required":["redirectAfterClaim"],"additionalProperties":false,"description":"An object defining the customizations in the postClaim step.","example":{"redirectAfterClaim":"https://example.com/redirect"},"uniqueKey":"customization.recipientExperience.postClaim","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"customization.recipientExperience","typeLabel":"object"}},"required":["giftProperties","notificationPolicy"],"description":"Campaign customization defines the entire gift recipient experience.\nIt includes budget parameters, collection or product selection, expiration settings, notification methods, and visual presentation elements that create a cohesive branded experience.","uniqueKey":"customization","typeLabel":"object"}},"description":"Campaign details including configuration and customization.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"abcd1234","createdAt":"2021-01-01T00:00:00.000Z","updatedAt":"2021-01-01T00:00:00.000Z","name":"Campaign Name","accountId":"a12bcd34","companyId":"A1b2C3d4","status":"draft","source":"api_native","account":{"id":"a12bcd34","name":"Account Name"},"type":"oneOffs","giftsExpirationInDays":30,"giftExpirationDate":"\u003cstring>","properties":[{"budget":100,"collection":{"id":"abcdef12","name":"Collection Name","defaultCountry":"US"}}],"customization":{"giftProperties":[{"selectedGiftType":"collection","budget":{"max":100,"min":76},"expiration":{"type":"daysFromSend","numberOfDays":30},"guaranteedGift":{"type":"daysFromSend","numberOfDays":30},"collection":{"id":"12345678","featuredProducts":["12345678"]},"product":{"id":"12345678","displayType":"displayAsSurprise"}}],"notificationPolicy":{"sendingChannels":["mail"],"disableReminders":true},"recipientExperience":{"type":"enterAddress","visualElements":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000"},"greeting":{"content":{"ops":[{"insert":"Happy Birthday!"}]},"banner":{"text":"Happy Birthday!","color":"#000000","mediaItems":{"background":[{"type":"image","url":"https://example.com/image.jpg"}]}}},"postClaim":{"redirectAfterClaim":"https://example.com/redirect"}}}}}}},"exampleType":"generated"}},"exampleType":"generated"},"136154a2-ab8e-4a6b-b60f-ce6c53deb32b":{"description":"Bad Request - Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_001","isRequired":true,"uniqueKey":"errorCode","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Unauthorized","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"The path of the field that caused the error.","example":"body.recipients.0.email","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Invalid email.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_002","isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode","typeLabel":"string"}},"required":["path","message","errorCode"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"An array of client errors. This field is being returned only for errors the client should fix, usually with status code 400.","uniqueKey":"errors","typeLabel":"object[]"}},"required":["status","errorCode","message"],"description":"API error response with string error codes and optional client error details","example":{"status":400,"errorCode":"400_PBLC_001","message":"Bad Request"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":400,"errorCode":"400_PBLC_001","message":"Bad Request"}}},"exampleType":"generated"}},"exampleType":"generated"},"ba149459-8fcc-4a02-ba5f-dc9fa4cb6111":{"description":"Unauthorized, invalid, expired or missing token","content":{"application/json":{"schema":{"type":"object","description":"API error response with string error codes and optional client error details","required":["status","errorCode","message"],"example":{"status":401,"errorCode":"401_PBLC_001","message":"Unauthorized"},"properties":{"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_001","isRequired":true,"uniqueKey":"errorCode","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Unauthorized","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"The path of the field that caused the error.","example":"body.recipients.0.email","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Invalid email.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_002","isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode","typeLabel":"string"}},"required":["path","message","errorCode"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"An array of client errors. This field is being returned only for errors the client should fix, usually with status code 400.","uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":401,"errorCode":"401_PBLC_001","message":"Unauthorized"}}},"exampleType":"generated"}},"exampleType":"generated"},"2371564a-eb7b-4be0-abda-4baeacc899f6":{"description":"Company or account mismatch","content":{"application/json":{"schema":{"type":"object","description":"API error response with string error codes and optional client error details","required":["status","errorCode","message"],"example":{"status":403,"errorCode":"403_PBLC_001","message":"This API key doesn't have permission to access this endpoint."},"properties":{"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_001","isRequired":true,"uniqueKey":"errorCode","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Unauthorized","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"The path of the field that caused the error.","example":"body.recipients.0.email","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Invalid email.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_002","isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode","typeLabel":"string"}},"required":["path","message","errorCode"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"An array of client errors. This field is being returned only for errors the client should fix, usually with status code 400.","uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":403,"errorCode":"403_PBLC_001","message":"This API key doesn't have permission to access this endpoint."}}},"exampleType":"generated"}},"exampleType":"generated"},"af4dfad6-480e-438e-a338-763225ca4e29":{"description":"Conflict - Campaign with this name already exists","content":{"application/json":{"schema":{"type":"object","description":"API error response with string error codes and optional client error details","required":["status","errorCode","message"],"example":{"status":409,"errorCode":"409_PBLC_001","message":"Conflict"},"properties":{"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_001","isRequired":true,"uniqueKey":"errorCode","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Unauthorized","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"The path of the field that caused the error.","example":"body.recipients.0.email","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Invalid email.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_002","isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode","typeLabel":"string"}},"required":["path","message","errorCode"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"An array of client errors. This field is being returned only for errors the client should fix, usually with status code 400.","uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":409,"errorCode":"409_PBLC_001","message":"Conflict"}}},"exampleType":"generated"}},"exampleType":"generated"},"dfe62b8b-dd72-49d4-85f8-b49e56a6f1fc":{"description":"Cant create campaign due to business logic validation","content":{"application/json":{"schema":{"type":"object","description":"API error response with string error codes and optional client error details","required":["status","errorCode","message"],"example":{"status":422,"errorCode":"422_PBLC_001","message":"Unprocessable entity"},"properties":{"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_001","isRequired":true,"uniqueKey":"errorCode","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Unauthorized","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"The path of the field that caused the error.","example":"body.recipients.0.email","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"},"message":{"type":"string","description":"The error message.","example":"Invalid email.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"errorCode":{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":"400_PBLC_002","isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode","typeLabel":"string"}},"required":["path","message","errorCode"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"An array of client errors. This field is being returned only for errors the client should fix, usually with status code 400.","uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":422,"errorCode":"422_PBLC_001","message":"Unprocessable entity"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"48da4605-8bb5-4372-a94a-3f7b2cfdb3ed":{"CompanyLevelAuthentication":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"## Company Level Authentication\n\nCompany level authentication provides access to all resources under your company, including accounts, campaigns, gifts, and recipients.\n\n### Getting Your API Key\n\n1. **Create an API Key**: Use the `POST /v2/authentication/apiKeys` endpoint to generate a new API key\n2. **Set Expiration**: Choose from 30, 60, 90, or 180 days (default: 90 days)\n3. **Optional mTLS**: Enable mutual TLS for enhanced security\n4. **Name Your Key**: Provide a descriptive name for easy identification\n\n### Using Your API Key\n\nInclude your API key in the `X-Api-Key` header for every request:\n```\nX-Api-Key: YOUR_24_CHARACTER_API_KEY\n```\n\n### API Key Management\n\n- **Maximum Keys**: Up to 3 active API keys per company\n- **Rotation**: Delete old keys before creating new ones when at the limit\n- **Security**: Keys are hashed and cannot be retrieved after creation\n\n### Enhanced Security (mTLS)\n\nFor production environments, enable mutual TLS authentication:\n1. Set `enforceMtls: true` when creating the API key\n2. Contact support to obtain your client certificates\n3. Use the mTLS endpoint: `https://mtls-api.snappy.com/public-api`\n","scopes":[],"schemeName":"CompanyLevelAuthentication"}},"284d0d78-9c1b-4b03-b171-32f1436d0226":{"BearerAuthentication":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication provides access to all resources under your company, including accounts, campaigns, gifts, and recipients.","scopes":[],"schemeName":"BearerAuthentication"}}},"servers":{"1f7ead17-6160-4972-87e6-98b65f7453c1":{"url":"https://api.snappy.com/public-api","description":"Base API URL"},"2cb6fbb2-b4f6-4068-8394-aa2eea9f61d7":{"url":"https://mtls-api.snappy.com/public-api","description":"## mTLS URL\nYou can also use mTLS to enhance your API security. To get your specific certificates please contact our support.\nOnce you configure the certificated correctly, you need to also update endpoints to use the following secure api base URL:"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"## Company Level Authentication\n\nCompany level authentication provides access to all resources under your company, including accounts, campaigns, gifts, and recipients.\n\n### Getting Your API Key\n\n1. **Create an API Key**: Use the `POST /v2/authentication/apiKeys` endpoint to generate a new API key\n2. **Set Expiration**: Choose from 30, 60, 90, or 180 days (default: 90 days)\n3. **Optional mTLS**: Enable mutual TLS for enhanced security\n4. **Name Your Key**: Provide a descriptive name for easy identification\n\n### Using Your API Key\n\nInclude your API key in the `X-Api-Key` header for every request:\n```\nX-Api-Key: YOUR_24_CHARACTER_API_KEY\n```\n\n### API Key Management\n\n- **Maximum Keys**: Up to 3 active API keys per company\n- **Rotation**: Delete old keys before creating new ones when at the limit\n- **Security**: Keys are hashed and cannot be retrieved after creation\n\n### Enhanced Security (mTLS)\n\nFor production environments, enable mutual TLS authentication:\n1. Set `enforceMtls: true` when creating the API key\n2. Contact support to obtain your client certificates\n3. Use the mTLS endpoint: `https://mtls-api.snappy.com/public-api`\n","scopes":[],"schemeName":"CompanyLevelAuthentication"},"schema":{"title":"X-Api-Key","type":"string","description":"## Company Level Authentication\n\nCompany level authentication provides access to all resources under your company, including accounts, campaigns, gifts, and recipients.\n\n### Getting Your API Key\n\n1. **Create an API Key**: Use the `POST /v2/authentication/apiKeys` endpoint to generate a new API key\n2. **Set Expiration**: Choose from 30, 60, 90, or 180 days (default: 90 days)\n3. **Optional mTLS**: Enable mutual TLS for enhanced security\n4. **Name Your Key**: Provide a descriptive name for easy identification\n\n### Using Your API Key\n\nInclude your API key in the `X-Api-Key` header for every request:\n```\nX-Api-Key: YOUR_24_CHARACTER_API_KEY\n```\n\n### API Key Management\n\n- **Maximum Keys**: Up to 3 active API keys per company\n- **Rotation**: Delete old keys before creating new ones when at the limit\n- **Security**: Keys are hashed and cannot be retrieved after creation\n\n### Enhanced Security (mTLS)\n\nFor production environments, enable mutual TLS authentication:\n1. Set `enforceMtls: true` when creating the API key\n2. Contact support to obtain your client certificates\n3. Use the mTLS endpoint: `https://mtls-api.snappy.com/public-api`\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"CompanyLevelAuthentication","name":"X-Api-Key"}],"title":"CompanyLevelAuthentication"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication provides access to all resources under your company, including accounts, campaigns, gifts, and recipients.","scopes":[],"schemeName":"BearerAuthentication"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication provides access to all resources under your company, including accounts, campaigns, gifts, and recipients.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuthentication","name":"Authorization"}],"title":"BearerAuthentication"}]},"originalFileLocation":"modules/src/generated-openapi.public.yml"},"subdomain":"snappy-32aaf7de","siteName":"Snappy API Docs","title":"Create campaign - Snappy API Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T13:54:34.412Z","gitLastModified":"2026-06-17T14:04:15.000Z","originalFileLocation":"modules/api/v2/campaigns/create-campaign.mdx"},"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=\"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account\u0026#x27;s default Billing Method. ###### Required fields: - name - display name of the Campaign (must be unique within the Company) - accountId - the Account this Campaign belongs to - customization - Gift Customization configuration (giftProperties, notificationPolicy, optionally recipientExperience) ###### Optional parameters: - Request-Source header - source of the request (api_native, api_zapier, api_salesforce, api_ftp, api_make) ###### Behavior Notes: - Returns 201 with the new Campaign on success. - Campaigns created via the API are always created with type: oneOffs. Other Campaign types (anniversary, birthday, schedule, marketing, newHire) can only be created through the Snappy Dashboard. - Returns 409 when a Campaign with the same name already exists in the Company. - Returns 422 for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization). #### Permissions - Requires: campaigns:create\">\u003cmeta data-mint-head name=\"application-name\" content=\"Snappy API Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_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=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create campaign - Snappy API Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account\u0026#x27;s default Billing Method. ###### Required fields: - name - display name of the Campaign (must be unique within the Company) - accountId - the Account this Campaign belongs to - customization - Gift Customization configuration (giftProperties, notificationPolicy, optionally recipientExperience) ###### Optional parameters: - Request-Source header - source of the request (api_native, api_zapier, api_salesforce, api_ftp, api_make) ###### Behavior Notes: - Returns 201 with the new Campaign on success. - Campaigns created via the API are always created with type: oneOffs. Other Campaign types (anniversary, birthday, schedule, marketing, newHire) can only be created through the Snappy Dashboard. - Returns 409 when a Campaign with the same name already exists in the Company. - Returns 422 for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization). #### Permissions - Requires: campaigns:create\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Snappy API Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://snappy-32aaf7de.mintlify.app/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+campaign\u0026amp;description=Use+this+endpoint+to+create+a+new+Campaign+under+an+Account.+When+created+via+the+API%2C+the+Campaign+is+automatically+assigned+the+Account%27s+default+Billing+Meth\u0026amp;theme=9793b5d79242210c7d69f96c\u0026amp;signature=9cd2f6e64a563ca8cba21bc6c0239af1404925e69c58370b307fa1d99d76cd52\">\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 - Snappy API Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account\u0026#x27;s default Billing Method. ###### Required fields: - name - display name of the Campaign (must be unique within the Company) - accountId - the Account this Campaign belongs to - customization - Gift Customization configuration (giftProperties, notificationPolicy, optionally recipientExperience) ###### Optional parameters: - Request-Source header - source of the request (api_native, api_zapier, api_salesforce, api_ftp, api_make) ###### Behavior Notes: - Returns 201 with the new Campaign on success. - Campaigns created via the API are always created with type: oneOffs. Other Campaign types (anniversary, birthday, schedule, marketing, newHire) can only be created through the Snappy Dashboard. - Returns 409 when a Campaign with the same name already exists in the Company. - Returns 422 for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization). #### Permissions - Requires: campaigns:create\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://snappy-32aaf7de.mintlify.app/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+campaign\u0026amp;description=Use+this+endpoint+to+create+a+new+Campaign+under+an+Account.+When+created+via+the+API%2C+the+Campaign+is+automatically+assigned+the+Account%27s+default+Billing+Meth\u0026amp;theme=9793b5d79242210c7d69f96c\u0026amp;signature=9cd2f6e64a563ca8cba21bc6c0239af1404925e69c58370b307fa1d99d76cd52\">\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=\"/mintlify-assets/_mintlify/favicons/snappy-32aaf7de/oqrpWnrgvoAA6g6W/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Snappy API Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3077C9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/modules/api/v2/campaigns/create-campaign.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.snappy.com/#organization\",\"name\":\"Snappy API Docs\",\"url\":\"https://docs.snappy.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/snappy-32aaf7de/mts3uwPRgvWZUmQ7/images/SNA_Primary_Navy.svg?fit=max\u0026auto=format\u0026n=mts3uwPRgvWZUmQ7\u0026q=85\u0026s=b8a23414e2c9f00b6607cca6445784e8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.snappy.com#website\",\"name\":\"Snappy API Docs\",\"url\":\"https://docs.snappy.com\",\"publisher\":{\"@id\":\"https://docs.snappy.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign#webpage\",\"url\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign\",\"name\":\"Create campaign\",\"description\":\"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account's default Billing Method. ###### Required fields: - name - display name of the Campaign (must be unique within the Company) - accountId - the Account this Campaign belongs to - customization - Gift Customization configuration (giftProperties, notificationPolicy, optionally recipientExperience) ###### Optional parameters: - Request-Source header - source of the request (api_native, api_zapier, api_salesforce, api_ftp, api_make) ###### Behavior Notes: - Returns 201 with the new Campaign on success. - Campaigns created via the API are always created with type: oneOffs. Other Campaign types (anniversary, birthday, schedule, marketing, newHire) can only be created through the Snappy Dashboard. - Returns 409 when a Campaign with the same name already exists in the Company. - Returns 422 for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization). #### Permissions - Requires: campaigns:create\",\"dateModified\":\"2026-06-17T14:04:15.000Z\",\"isPartOf\":{\"@id\":\"https://docs.snappy.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Gifting\",\"item\":\"https://docs.snappy.com/modules/api/v2/campaigns/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Campaigns\",\"item\":\"https://docs.snappy.com/modules/api/v2/campaigns/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create campaign\",\"item\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign#apireference\",\"headline\":\"Create campaign\",\"name\":\"Create campaign\",\"description\":\"Use this endpoint to create a new Campaign under an Account. When created via the API, the Campaign is automatically assigned the Account's default Billing Method. ###### Required fields: - name - display name of the Campaign (must be unique within the Company) - accountId - the Account this Campaign belongs to - customization - Gift Customization configuration (giftProperties, notificationPolicy, optionally recipientExperience) ###### Optional parameters: - Request-Source header - source of the request (api_native, api_zapier, api_salesforce, api_ftp, api_make) ###### Behavior Notes: - Returns 201 with the new Campaign on success. - Campaigns created via the API are always created with type: oneOffs. Other Campaign types (anniversary, birthday, schedule, marketing, newHire) can only be created through the Snappy Dashboard. - Returns 409 when a Campaign with the same name already exists in the Company. - Returns 422 for business-rule violations (e.g. invalid Collection/Product reference, conflicting customization). #### Permissions - Requires: campaigns:create\",\"url\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign\",\"mainEntityOfPage\":{\"@id\":\"https://docs.snappy.com/modules/api/v2/campaigns/create-campaign#webpage\"},\"dateModified\":\"2026-06-17T14:04:15.000Z\",\"publisher\":{\"@id\":\"https://docs.snappy.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.snappy.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Snappy API Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Snappy API Docs","nav":{"global":null,"tabs":[{"tab":"Get started","pages":[{"title":"Get started","href":"/pages/welcome-to-snappy-api"}]},{"tab":"API Reference","icon":"rectangle-api","dropdowns":[{"dropdown":"V3 (Latest)","icon":"rectangle-api","pages":[{"title":"V3 API Overview","sidebarTitle":"Overview","icon":"rectangle-api","href":"/modules/api/v3/overview"},{"group":"Authentication","pages":[{"group":"API Keys","pages":[{"title":"API Keys (V3): Programmatic Key Management","sidebarTitle":"Overview","href":"/modules/api/v3/api-keys/overview"},{"title":"Get API keys","openapi":"get /v3/authentication/api-keys","href":"/modules/api/v3/api-keys/get-api-keys"},{"title":"Create API key","openapi":"post /v3/authentication/api-keys","href":"/modules/api/v3/api-keys/create-api-key"},{"title":"Delete API key","openapi":"delete /v3/authentication/api-keys/{apiKeyId}","href":"/modules/api/v3/api-keys/delete-api-key"}]}]},{"group":"Marketplace","pages":[{"group":"Products","pages":[{"title":"Products API: Browse Snappy's Catalog","sidebarTitle":"Overview","href":"/modules/api/v3/products/overview"},{"title":"Get products","openapi":"get /v3/products","href":"/modules/api/v3/products/get-products"},{"title":"Get product by ID","openapi":"get /v3/products/{productId}","href":"/modules/api/v3/products/get-product-by-id"},{"title":"Get product recommendations","openapi":"get /v3/products/{productId}/recommendations","href":"/modules/api/v3/products/get-product-recommendations"},{"title":"Get product variants","openapi":"get /v3/products/{productId}/variants","href":"/modules/api/v3/products/get-product-variants"},{"title":"Get product tags","openapi":"get /v3/product-tags","href":"/modules/api/v3/product-tags/get-product-tags"}]},{"group":"Variants","pages":[{"title":"Variants API: The Orderable Units of the Catalog","sidebarTitle":"Overview","href":"/modules/api/v3/variants/overview"},{"title":"Get variant by ID","openapi":"get /v3/variants/{variantId}","href":"/modules/api/v3/variants/get-variant-by-id"},{"title":"Get variant availability","openapi":"get /v3/variants/{variantId}/availability","href":"/modules/api/v3/variants/get-variant-availability"}]},{"group":"Collections","pages":[{"title":"Collections API: Curated Gift Catalogs","sidebarTitle":"Overview","href":"/modules/api/v3/collections/overview"},{"title":"Get collections","openapi":"get /v3/collections","href":"/modules/api/v3/collections/get-collections"},{"title":"Get collection by ID","openapi":"get /v3/collections/{collectionId}","href":"/modules/api/v3/collections/get-collection-by-id"},{"title":"Get collection products","openapi":"get /v3/collections/{collectionId}/products","href":"/modules/api/v3/collections/get-collection-products"},{"title":"Get featured collection products","openapi":"get /v3/collections/{collectionId}/products/featured","href":"/modules/api/v3/collections/get-collection-featured-products"}]},{"group":"Orders","pages":[{"title":"Orders API: Place, Track, and Manage Orders","sidebarTitle":"Overview","href":"/modules/api/v3/orders/overview"},{"title":"Place order","openapi":"post /v3/orders","href":"/modules/api/v3/orders/place-order"},{"title":"Get orders","openapi":"get /v3/orders","href":"/modules/api/v3/orders/get-orders"},{"title":"Get order by ID","openapi":"get /v3/orders/{orderId}","href":"/modules/api/v3/orders/get-order-by-id"},{"title":"Cancel order","openapi":"post /v3/orders/{orderId}/cancel","href":"/modules/api/v3/orders/cancel-order"},{"title":"Validate order address","openapi":"post /v3/orders/addresses/validate","href":"/modules/api/v3/orders/validate-order-address"},{"title":"Autocomplete order address","openapi":"get /v3/orders/addresses/autocomplete","href":"/modules/api/v3/orders/autocomplete-order-address"}]},{"group":"Digital Cards","pages":[{"title":"Digital Cards API","sidebarTitle":"Overview","href":"/modules/api/v3/digital-cards/overview"},{"title":"List digital cards","openapi":"get /v3/digital-cards","href":"/modules/api/v3/digital-cards/get-digital-cards"},{"title":"Get digital card by ID","openapi":"get /v3/digital-cards/{digitalCardId}","href":"/modules/api/v3/digital-cards/get-digital-card-by-id"},{"title":"Get digital card access code","openapi":"get /v3/digital-cards/{digitalCardId}/access-code","href":"/modules/api/v3/digital-cards/get-digital-card-access-code"}]},{"group":"Export","pages":[{"title":"Export API: Bulk Catalog Ingestion","sidebarTitle":"Overview","href":"/modules/api/v3/exports/overview"},{"title":"Create products export","openapi":"post /v3/products/exports","href":"/modules/api/v3/exports/create-products-export-job-async"},{"title":"Create collections export","openapi":"post /v3/collections/exports","href":"/modules/api/v3/exports/create-collections-export-job-async"},{"title":"Get export status","openapi":"get /v3/products/exports/{exportId}","href":"/modules/api/v3/exports/poll-export-job-status"}]}]},{"group":"Swag","pages":[{"title":"Swag Products: Branded Merchandise Templates","sidebarTitle":"Overview","href":"/modules/api/v3/swag/overview"},{"group":"Base Products","pages":[{"title":"Get base products","openapi":"get /v3/swag/base-products","href":"/modules/api/v3/base-products/get-base-products"},{"title":"Get base product by ID","openapi":"get /v3/swag/base-products/{baseProductId}","href":"/modules/api/v3/base-products/get-base-product-by-id"}]},{"group":"Base Variants","pages":[{"title":"Get base variants by base product ID","openapi":"get /v3/swag/base-products/{baseProductId}/variants","href":"/modules/api/v3/base-products/get-base-variants-by-base-product-id"},{"title":"Get base variant by ID","openapi":"get /v3/swag/base-variants/{baseVariantId}","href":"/modules/api/v3/base-products/get-base-variant-by-id"}]}]},{"group":"Gifting","pages":[{"title":"See V2","sidebarTitle":"See V2","icon":"arrow-alt-circle-right","href":"/pages/see-v2"}]},{"group":"Administration","pages":[{"group":"Accounts","pages":[{"title":"Accounts API (V3): Organize Gifting by Team, Department, or Budget","sidebarTitle":"Overview","href":"/modules/api/v3/accounts/overview"},{"title":"Get accounts","openapi":"get /v3/accounts","href":"/modules/api/v3/accounts/get-accounts"},{"title":"Create account","openapi":"post /v3/accounts","href":"/modules/api/v3/accounts/create-account"},{"title":"Get account by ID","openapi":"get /v3/accounts/{accountId}","href":"/modules/api/v3/accounts/get-account-by-id"}]},{"group":"Billing methods","pages":[{"title":"Billing Methods API: Account Funding Sources and Remaining Balances","sidebarTitle":"Overview","href":"/modules/api/v3/billing-methods/overview"},{"title":"Get billing methods","openapi":"get /v3/billing-methods","href":"/modules/api/v3/billing-methods/get-billing-methods"},{"title":"Get billing method by ID","openapi":"get /v3/billing-methods/{billingMethodId}","href":"/modules/api/v3/billing-methods/get-billing-method-by-id"}]}]}]},{"dropdown":"V2","icon":"rectangle-api","pages":[{"title":"V2 API Overview","sidebarTitle":"Overview","icon":"rectangle-api","href":"/modules/api/v2/overview"},{"group":"Authentication","pages":[{"group":"API Keys","pages":[{"title":"API Keys (V2): Programmatic Key Management","sidebarTitle":"Overview","href":"/modules/api/v2/api-keys/overview"},{"title":"Get API keys","openapi":"get /v2/authentication/apiKeys","href":"/modules/api/v2/api-keys/get-api-keys"},{"title":"Create API key","openapi":"post /v2/authentication/apiKeys","href":"/modules/api/v2/api-keys/create-api-key"},{"title":"Delete API key","openapi":"delete /v2/authentication/apiKeys/{apiKeyId}","href":"/modules/api/v2/api-keys/delete-api-key"}]}]},{"group":"Marketplace","pages":[{"title":"See V3","sidebarTitle":"See V3","icon":"arrow-alt-circle-right","href":"/pages/see-v3"}]},{"group":"Gifting","pages":[{"group":"Campaigns","pages":[{"title":"Campaigns API (V2): Plan, Schedule, and Report on Gifting Campaigns","sidebarTitle":"Overview","href":"/modules/api/v2/campaigns/overview"},{"title":"Get campaigns","openapi":"get /v2/campaigns","description":"Use this endpoint to retrieve a paginated list of Campaigns with flexible filtering options. Use this when building a Campaign picker in your UI, syncing Campaigns to your system, or auditing existing Campaign configurations.\n\n**Filtering options**\n- `accountId` query parameter - filter to Campaigns belonging to a specific Account\n- `types` query parameter - comma-separated Campaign types (`anniversary`, `birthday`, `schedule`, `marketing`, `oneOffs`, `newHire`)\n- `sources` query parameter - comma-separated Campaign sources (`dashboard`, `dashboard_ai`, `api_native`, `api_zapier`, `api_make`, `api_salesforce`, `api_ftp`)\n- `statuses` query parameter - comma-separated Campaign statuses (e.g. `draft,active,paused`)\n- `fields` query parameter - comma-separated field projection. Valid values: `id`, `name`, `createdAt`, `updatedAt`, `companyId`, `accountId`, `account`, `properties`, `giftsExpirationInDays`, `giftExpirationDate`, `type`, `source`, `status`, `customization`, `full`\n- `Request-Source` header - source of the request\n\n**Pagination**\n- `skip` query parameter - number of records to skip (default `0`)\n- `limit` query parameter - max records per page (1-1000, default `100`)\n\n**Please note**\n- The response wraps Campaigns in a `results` array with `skip` and `limit` echoed back.\n\n#### Permissions\n- Requires: `campaigns:read`","href":"/modules/api/v2/campaigns/get-campaigns"},{"title":"Create campaign","openapi":"post /v2/campaigns","href":"/modules/api/v2/campaigns/create-campaign"},{"title":"Get campaign by ID","openapi":"get /v2/campaigns/{campaignId}","description":"Use this endpoint to retrieve the full details of a specific Campaign by its identifier, including its Gift Customization settings and assigned Collection or Product.\n\n###### Required fields:\n- `campaignId` - the Campaign identifier, passed as a path parameter\n\n###### Optional parameters:\n- `Request-Source` header - source of the request\n\n###### Please note:\n- Returns `404` if no Campaign exists for the supplied `campaignId`, or if it's not accessible to the calling API key.\n- Returns `422` when the Campaign references a Collection that can no longer be found - the Campaign still exists but its catalog can't be resolved.\n\n#### Permissions\n- Requires: `campaigns:read`","href":"/modules/api/v2/campaigns/get-campaign-by-id"},{"title":"Update campaign by ID","openapi":"patch /v2/campaigns/{campaignId}","href":"/modules/api/v2/campaigns/update-campaign-by-id"},{"title":"Get estimated cost for campaign","openapi":"get /v2/campaigns/{campaignId}/estimatedCost","href":"/modules/api/v2/campaigns/get-estimated-cost-for-campaign"}]},{"group":"Collections","pages":[{"title":"Collections API (V2): Curated Gift Catalogs","sidebarTitle":"Overview","href":"/modules/api/v2/collections/overview"},{"title":"Get collections","openapi":"get /v2/collections","href":"/modules/api/v2/collections/get-collections"},{"title":"Get collection budgets","openapi":"get /v2/collections/budgets","href":"/modules/api/v2/collections/get-collection-budgets"},{"title":"Get collection products","openapi":"get /v2/collections/{collectionId}/products","href":"/modules/api/v2/collections/get-collection-products"},{"title":"Get collection products count","openapi":"get /v2/collections/{collectionId}/products/count","href":"/modules/api/v2/collections/get-collection-products-count"},{"title":"Get collection product","openapi":"get /v2/collections/{collectionId}/products/{productId}","href":"/modules/api/v2/collections/get-collection-product"}]},{"group":"Products \u0026 Variants","pages":[{"title":"Products \u0026 Variants API (V2): Catalog Access for Gifting","sidebarTitle":"Overview","href":"/modules/api/v2/products/overview"},{"title":"Get products","openapi":"get /v2/products","href":"/modules/api/v2/products/get-products"},{"title":"Get product tags","openapi":"get /v2/products/tags","href":"/modules/api/v2/products/get-product-tags"},{"title":"Get variants by product ID","openapi":"get /v2/products/{productId}","href":"/modules/api/v2/products/get-variants-by-product-id"},{"title":"Get variant by ID","openapi":"get /v2/variants/{variantId}","href":"/modules/api/v2/variants/get-variant-by-id"}]},{"group":"Gifts","pages":[{"title":"Gifts API (V2): Create, Track, and Expire Gifts","sidebarTitle":"Overview","href":"/modules/api/v2/gifts/overview"},{"title":"Create gifts","openapi":"post /v2/gifts","href":"/modules/api/v2/gifts/create-gifts"},{"title":"Get gifts","openapi":"get /v2/gifts","href":"/modules/api/v2/gifts/get-gifts"},{"title":"Create demo gift","openapi":"post /v2/gifts/demo","href":"/modules/api/v2/gifts/create-demo-gift"},{"title":"Get gift by ID","openapi":"get /v2/gifts/{giftId}","href":"/modules/api/v2/gifts/get-gift-by-id"},{"title":"Update gift by ID","openapi":"patch /v2/gifts/{giftId}","href":"/modules/api/v2/gifts/update-gift-by-id"},{"title":"Expire a gift","openapi":"post /v2/gifts/{giftId}/expire","href":"/modules/api/v2/gifts/expire-gift"}]},{"group":"Orders","pages":[{"title":"Orders API (V2): Address Validation, Cancellation \u0026 Claims","sidebarTitle":"Overview","href":"/modules/api/v2/orders/overview"},{"title":"Claim a gift","openapi":"post /v2/gifts/{giftId}/claim","href":"/modules/api/v2/orders/claim-gift"},{"title":"Cancel an order","openapi":"post /v2/gifts/{giftId}/cancel","href":"/modules/api/v2/orders/cancel-order"},{"title":"Validate order address","openapi":"post /v2/orders/addresses/validate","href":"/modules/api/v2/orders/validate-order-address"},{"title":"Autocomplete order address","openapi":"get /v2/orders/addresses/autocomplete","href":"/modules/api/v2/orders/autocomplete-order-address"}]},{"group":"Recipients","pages":[{"title":"Recipients API (V2): Manage Gift Recipients at Scale","sidebarTitle":"Overview","href":"/modules/api/v2/recipients/overview"},{"title":"Create recipient","openapi":"post /v2/recipients","href":"/modules/api/v2/recipients/create-recipient"},{"title":"Get recipients","openapi":"get /v2/recipients","href":"/modules/api/v2/recipients/get-recipients"},{"title":"Get recipient by ID","openapi":"get /v2/recipients/{recipientId}","href":"/modules/api/v2/recipients/get-recipient-by-id"},{"title":"Update recipient","openapi":"patch /v2/recipients/{recipientId}","href":"/modules/api/v2/recipients/update-recipient"},{"title":"Delete recipient by ID","openapi":"delete /v2/recipients/{recipientId}","href":"/modules/api/v2/recipients/delete-recipient-by-id"}]}]},{"group":"Administration","pages":[{"group":"Accounts","pages":[{"title":"Accounts API (V2): Organize Gifting by Team, Department, or Budget","sidebarTitle":"Overview","href":"/modules/api/v2/accounts/overview"},{"title":"Get accounts","openapi":"get /v2/accounts","href":"/modules/api/v2/accounts/get-accounts"},{"title":"Create account","openapi":"post /v2/accounts","href":"/modules/api/v2/accounts/create-account"},{"title":"Get account by ID","openapi":"get /v2/accounts/{accountId}","href":"/modules/api/v2/accounts/get-account-by-id"}]}]}]}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/introduction"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/pages/logicbroker-integration"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/pages/changelog"}]}]},"basePath":"","title":"Create campaign - Snappy API Docs","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}