Optional metadata object with key-value pairs. Keys must be alphanumeric (including underscores) and up to 40 characters. Values must be alphanumeric and up to 500 characters. Maximum 50 key-value pairs allowed.
Optional metadata object with key-value pairs. Keys must be alphanumeric (including underscores) and up to 40 characters. Values must be alphanumeric and up to 500 characters. Maximum 50 key-value pairs allowed.
{"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/gifts/create-demo-gift","slug":"/modules/api/v2/gifts/create-demo-gift","pageMetadata":{"title":"Create demo gift","openapi":"post /v2/gifts/demo","description":"Use this endpoint to create non-claimable demo gifst to preview and test the full recipient experience without incurring any costs.\n\n###### Required fields:\n- `campaignId` - the Campaign ID to send under\n- `recipients` - array of demo recipients\n\n###### Optional fields:\n- `customization` - Gift Customization overrides\n- `metadata` - optional key-value pairs (max 50 pairs)\n- `Request-Source` header - source of the request\n\n###### Behavior Notes:\n- Demo gifts are **free** and do not affect your Account's budget or Billing Method.\n- Demo gifts **cannot be redeemed** for an actual product - they're for preview only.\n- The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end.\n- Same request body shape as [Create gifts](/modules/api/v2/gifts/create-gifts).\n\n#### Permissions\n- Requires: `gifts:create:demo`","href":"/modules/api/v2/gifts/create-demo-gift"},"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 a: \"a\",\n code: \"code\",\n h4: \"h4\",\n h6: \"h6\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\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 non-claimable demo gifst to preview and test the full recipient experience without incurring any costs.\"\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: \"campaignId\"\n }), \" - the Campaign ID to send under\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"recipients\"\n }), \" - array of demo recipients\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h6, {\n children: \"Optional fields:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"customization\"\n }), \" - Gift Customization overrides\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"metadata\"\n }), \" - optional key-value pairs (max 50 pairs)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"Request-Source\"\n }), \" header - source of the request\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h6, {\n children: \"Behavior Notes:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Demo gifts are \", _jsx(_components.strong, {\n children: \"free\"\n }), \" and do not affect your Account’s budget or Billing Method.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Demo gifts \", _jsx(_components.strong, {\n children: \"cannot be redeemed\"\n }), \" for an actual product - they’re for preview only.\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Same request body shape as \", _jsx(_components.a, {\n href: \"/modules/api/v2/gifts/create-gifts\",\n children: \"Create gifts\"\n }), \".\"]\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: \"gifts:create:demo\"\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 demo gift","openapi":"post /v2/gifts/demo","description":"Use this endpoint to create non-claimable demo gifst to preview and test the full recipient experience without incurring any costs.\n\n###### Required fields:\n- `campaignId` - the Campaign ID to send under\n- `recipients` - array of demo recipients\n\n###### Optional fields:\n- `customization` - Gift Customization overrides\n- `metadata` - optional key-value pairs (max 50 pairs)\n- `Request-Source` header - source of the request\n\n###### Behavior Notes:\n- Demo gifts are **free** and do not affect your Account's budget or Billing Method.\n- Demo gifts **cannot be redeemed** for an actual product - they're for preview only.\n- The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end.\n- Same request body shape as [Create gifts](/modules/api/v2/gifts/create-gifts).\n\n#### Permissions\n- Requires: `gifts:create:demo`","href":"/modules/api/v2/gifts/create-demo-gift"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createDemoGift","tags":["Gifts"],"summary":"Create demo gift","description":"Use this endpoint to create non-claimable demo gifst to preview and test the full recipient experience without incurring any costs.\n\n###### Required fields:\n- `campaignId` - the Campaign ID to send under\n- `recipients` - array of demo recipients\n\n###### Optional fields:\n- `customization` - Gift Customization overrides\n- `metadata` - optional key-value pairs (max 50 pairs)\n- `Request-Source` header - source of the request\n\n###### Behavior Notes:\n- Demo gifts are **free** and do not affect your Account's budget or Billing Method.\n- Demo gifts **cannot be redeemed** for an actual product - they're for preview only.\n- The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end.\n- Same request body shape as [Create gifts](/modules/api/v2/gifts/create-gifts).\n\n#### Permissions\n- Requires: `gifts:create:demo`","security":["671690a1-fef8-4903-8152-d1a54a767883","4f58f219-ce19-407f-ae4a-9e2c2ba09b78"],"parameters":["c8be08e3-bab2-413f-936d-a9b230b69631"],"requestBody":"73679f2b-9d2f-4fed-b1c8-129140caa3f9","responses":{"200":"c07da21a-272b-4883-86a9-e884155e3644","400":"ff5da4c9-d84f-4b68-b828-94280414d6a6","401":"7f623639-34a4-4eb4-929f-6a152885fb9a"},"method":"post","type":"path","servers":["1f7ead17-6160-4972-87e6-98b65f7453c1","2cb6fbb2-b4f6-4068-8394-aa2eea9f61d7"],"path":"/v2/gifts/demo","baseUrlOptions":["https://api.snappy.com/public-api","https://mtls-api.snappy.com/public-api"],"title":"Create demo gift","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c8be08e3-bab2-413f-936d-a9b230b69631":{"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":{"campaignId":{"type":"string","pattern":"^[A-Za-z0-9]{8,}$","description":"Campaign ID","example":"12345678","isRequired":true,"uniqueKey":"campaignId","typeLabel":"string"},"recipients":{"type":"array","items":{"type":"object","properties":{"firstname":{"type":"string","pattern":"^(?=.{1,50}$)[a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F][a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]*([\\s\\(\\)\\.\\-_'\\u2018\\u2019]*[a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F][a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]*)*[ \\(\\)\\.\\-_'\\u2018\\u2019]*$","description":"The first name of the recipient.","example":"John","isRequired":true,"uniqueKey":"recipients.items.[INDEX].firstname","typeLabel":"string"},"lastname":{"type":"string","pattern":"^(?=.{1,50}$)[a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F][a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]*([\\s\\(\\)\\.\\-_'\\u2018\\u2019]*[a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F][a-zA-Z0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF\\u0400-\\u04FF\\u0500-\\u052F\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\u0E00-\\u0E7F\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]*)*[ \\(\\)\\.\\-_'\\u2018\\u2019]*$","description":"The last name of the recipient.","example":"Doe","uniqueKey":"recipients.items.[INDEX].lastname","typeLabel":"string"},"phone":{"type":"string","description":"The phone number that the gift will be sent to.\n( at the beginning is optional). Format: E.164.","example":"+1234567890","uniqueKey":"recipients.items.[INDEX].phone","typeLabel":"string"},"email":{"type":"string","pattern":"^(?=.{1,60}$)(?!.*[.]{2})(?!\\.)[a-zA-Z0-9._%+\\-\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F']+(?\u003c!\\.)@(?!-)[a-zA-Z0-9.-\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u01FF\\u0100-\\u017F\\u0180-\\u024F]+\\.(?!(?:con|cim|ocm|cmo)$)[a-zA-Z]{2,}$/i","description":"The email address that the gift will be sent to.","example":"example@domain.com","uniqueKey":"recipients.items.[INDEX].email","typeLabel":"string"},"key":{"type":"string","description":"An optional unique identifier for the gift sending, used to avoid duplicated gifts sending to the same recipients when not intending to. For example, if you implement a retry mechanism and want to avoid sending the same gift.","example":"abc123","uniqueKey":"recipients.items.[INDEX].key","typeLabel":"string"},"externalId":{"type":"string","description":"The id of the recipient in your own system.","example":"1234567890","uniqueKey":"recipients.items.[INDEX].externalId","typeLabel":"string"}},"required":["firstname"],"additionalProperties":false,"description":"The gift recipient object.","example":{"firstname":"John","lastname":"Doe","externalId":"1234567890","phone":"+1234567890","email":"example@domain.com","key":"abc123"},"uniqueKey":"recipients.items.[INDEX]","typeLabel":"object"},"description":"The recipients of the gift.","isRequired":true,"uniqueKey":"recipients","typeLabel":"object[]"},"sendingMethod":{"type":"string","enum":["mail","sms","mailAndSms","link"],"example":"mail","deprecated":true,"description":"Deprecated. Use \"customization.notificationPolicy.sendingChannels\" instead.","uniqueKey":"sendingMethod","typeLabel":"enum\u003cstring>"},"customization":{"type":"object","properties":{"giftProperties":{"type":"object","properties":{"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.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.budget.min","typeLabel":"number"}},"required":["max"],"additionalProperties":false,"description":"Budget constraints for gifts","example":{"max":100,"min":76},"uniqueKey":"customization.giftProperties.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.expiration.type","typeLabel":"enum\u003cstring>"},"date":{"type":"string","format":"date-time","description":"Required when type is specificDate, otherwise not allowed","uniqueKey":"customization.giftProperties.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.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.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.guaranteedGift.type","typeLabel":"enum\u003cstring>"},"date":{"type":"string","format":"date-time","description":"Required when type is specificDate, otherwise not allowed","uniqueKey":"customization.giftProperties.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.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.guaranteedGift","typeLabel":"object"},"selectedGiftType":{"type":"string","enum":["collection","product"],"uniqueKey":"customization.giftProperties.selectedGiftType","typeLabel":"enum\u003cstring>"},"collection":{"type":"object","description":"Collection configuration for campaign gifts.\nRequired when selectedGiftType is collection, otherwise not allowed.","required":["id"],"example":{"id":"12345678","featuredProductId":"12345678"},"properties":{"id":{"type":"string","description":"The id of the collection.","example":"12345678","isRequired":true,"uniqueKey":"customization.giftProperties.collection.id","typeLabel":"string"},"featuredProductId":{"type":"string","description":"The id of the featured product.","example":"12345678","uniqueKey":"customization.giftProperties.collection.featuredProductId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"customization.giftProperties.collection.name","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"customization.giftProperties.collection","typeLabel":"object"},"product":{"type":"object","description":"Product configuration for campaign gifts.\nRequired when selectedGiftType is product, otherwise not allowed.","required":["id"],"example":{"id":"12345678","displayType":"displayAsSurprise"},"properties":{"id":{"type":"string","description":"The id of the product.","example":"12345678","isRequired":true,"uniqueKey":"customization.giftProperties.product.id","typeLabel":"string"},"displayType":{"type":"string","enum":["displayAsSurprise","displayProduct"],"default":"displayProduct","example":"displayAsSurprise","uniqueKey":"customization.giftProperties.product.displayType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","uniqueKey":"customization.giftProperties.product.name","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"customization.giftProperties.product","typeLabel":"object"}},"additionalProperties":false,"description":"Gift properties determine the core characteristics of your gift - budget constraints, expiration settings, and content type (collection or specific product).\nThese settings influence what options will be available to your recipient.","example":{"budget":{"max":100,"min":76}},"uniqueKey":"customization.giftProperties","typeLabel":"object"},"notificationPolicy":{"type":"object","properties":{"sendingChannels":{"type":"array","items":{"type":"string","enum":["mail","sms","link","code","slack","teams"],"uniqueKey":"customization.notificationPolicy.sendingChannels.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"description":"List of channels to send notifications through","example":["mail","sms"],"uniqueKey":"customization.notificationPolicy.sendingChannels","typeLabel":"enum\u003cstring>[]"},"disableReminders":{"type":"boolean","description":"Whether reminder notifications are disabled","example":false,"uniqueKey":"customization.notificationPolicy.disableReminders","typeLabel":"boolean"}},"additionalProperties":false,"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.","example":{"sendingChannels":["mail","sms"],"disableReminders":false},"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":{"oneOf":[{"type":"string","description":"Primary color of reveal experience. Required unless type is noReveal.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.primaryColor.oneOf.0","typeLabel":"string\u003chex>"},{"type":"string","description":"Primary color of reveal experience. Required unless type is noReveal.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","enum":[""],"example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.primaryColor.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Primary color of reveal experience. Required unless type is noReveal.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.primaryColor.oneOf.2","typeLabel":"string\u003chex>"}],"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.primaryColor","typeLabel":"string\u003chex> · enum\u003cstring> · string\u003chex>"},"secondaryColor":{"oneOf":[{"type":"string","description":"Secondary color of reveal experience. Required unless type is noReveal.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.secondaryColor.oneOf.0","typeLabel":"string\u003chex>"},{"type":"string","description":"Secondary color of reveal experience. Required unless type is noReveal.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","enum":[""],"example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.secondaryColor.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Secondary color of reveal experience. Required unless type is noReveal.","format":"hex","pattern":"^#[0-9A-Fa-f]{6}$","example":"#000000","isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.secondaryColor.oneOf.2","typeLabel":"string\u003chex>"}],"isRequired":true,"uniqueKey":"customization.recipientExperience.visualElements.reveal.secondaryColor","typeLabel":"string\u003chex> · enum\u003cstring> · 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"}},"additionalProperties":false,"description":"Customization configuration of the gift.","uniqueKey":"customization","typeLabel":"object"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500,"pattern":"^[a-zA-Z0-9\\s\\-_.]+$","uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"maxProperties":50,"description":"Optional metadata object with key-value pairs. Keys must be alphanumeric (including underscores) and up to 40 characters. Values must be alphanumeric and up to 500 characters. Maximum 50 key-value pairs allowed.","example":{"key1":"value1","key2":"value2"},"uniqueKey":"metadata","typeLabel":"object"}},"required":["campaignId","recipients"],"additionalProperties":false,"description":"The gift object.","example":{"campaignId":"12345678","recipients":[{"firstname":"John","lastname":"Doe","externalId":"1234567890","phone":"+1234567890","email":"example@domain.com","key":"abc123"}],"sendingMethod":"mail","customization":{"recipientExperience":{"type":"enterAddress","visualElements":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000","mediaItems":{"logo":[{"type":"image","url":"https://example.com/media-item-1.jpg"}]}},"greeting":{"content":{"ops":[{"attributes":{"font":"pacifico","size":"32px","color":"#000000"},"insert":"Happy Birthday!"}]},"banner":{"mediaItems":{"background":[{"type":"image","url":"https://example.com/media-item-1.jpg"}]},"text":"🎁 Enjoy your gift!","color":"#36d4ff"}},"postClaim":{"redirectAfterClaim":"https://example.com/redirect"}}},"giftProperties":{"selectedGiftType":"product","product":{"id":"productId","displayType":"displayAsSurprise"},"budget":{"max":100,"min":76},"expiration":{"type":"daysFromSend","numberOfDays":30}},"notificationPolicy":{"sendingChannels":["mail"],"disableReminders":true}},"metadata":{"key1":"value1","key2":"value2"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"campaignId":"12345678","recipients":[{"firstname":"John","lastname":"Doe","externalId":"1234567890","phone":"+1234567890","email":"example@domain.com","key":"abc123"}],"sendingMethod":"mail","customization":{"recipientExperience":{"type":"enterAddress","visualElements":{"reveal":{"type":"snowGlobe","primaryColor":"#000000","secondaryColor":"#000000","mediaItems":{"logo":[{"type":"image","url":"https://example.com/media-item-1.jpg"}]}},"greeting":{"content":{"ops":[{"attributes":{"font":"pacifico","size":"32px","color":"#000000"},"insert":"Happy Birthday!"}]},"banner":{"mediaItems":{"background":[{"type":"image","url":"https://example.com/media-item-1.jpg"}]},"text":"🎁 Enjoy your gift!","color":"#36d4ff"}},"postClaim":{"redirectAfterClaim":"https://example.com/redirect"}}},"giftProperties":{"selectedGiftType":"product","product":{"id":"productId","displayType":"displayAsSurprise"},"budget":{"max":100,"min":76},"expiration":{"type":"daysFromSend","numberOfDays":30}},"notificationPolicy":{"sendingChannels":["mail"],"disableReminders":true}},"metadata":{"key1":"value1","key2":"value2"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"c07da21a-272b-4883-86a9-e884155e3644":{"description":"Ok","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"The message of the response","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500,"pattern":"^[a-zA-Z0-9\\s\\-_.]+$","uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"maxProperties":50,"description":"Optional metadata object with key-value pairs. Keys must be alphanumeric (including underscores) and up to 40 characters. Values must be alphanumeric and up to 500 characters. Maximum 50 key-value pairs allowed.","example":{"key1":"value1","key2":"value2"},"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"results":{"type":"array","items":{"type":"object","properties":{"success":{"type":"boolean","description":"The success of the gift creation","isRequired":true,"uniqueKey":"results.items.[INDEX].success","typeLabel":"boolean"},"link":{"type":"string","description":"The link to the gift","isRequired":true,"uniqueKey":"results.items.[INDEX].link","typeLabel":"string"},"id":{"type":"string","description":"The gift id","isRequired":true,"uniqueKey":"results.items.[INDEX].id","typeLabel":"string"},"experienceId":{"type":"string","description":"The experience id","isRequired":true,"uniqueKey":"results.items.[INDEX].experienceId","typeLabel":"string"},"message":{"type":"string","description":"The error message","isRequired":true,"uniqueKey":"results.items.[INDEX].message","typeLabel":"string"},"errorCode":{"type":"string","description":"The error code","isRequired":true,"uniqueKey":"results.items.[INDEX].errorCode","typeLabel":"string"}},"required":["success","link","id","experienceId","message","errorCode"],"uniqueKey":"results.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"results","typeLabel":"object[]"}},"required":["message","metadata","results"],"additionalProperties":false,"description":"The response of the gift creation","example":{"message":"2 gifts out of 3 have been sent successfully","metadata":{"campaignName":"Employee Appreciation Q1 2025","totalRecipients":3,"batchId":"batch_20250609_001"},"results":[{"success":true,"link":"https://snappy.com/experience/K9mP3xL7dN","id":"G7nR4bD9mK","experienceId":"exp_2024_john_001"},{"success":true,"link":"https://snappy.com/experience/X2pQ8vB5jL","id":"H8sT6cF2nP","experienceId":"exp_2024_jane_002"},{"success":false,"message":"Gift creation failed","errorCode":40000}]},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"2 gifts out of 3 have been sent successfully","metadata":{"campaignName":"Employee Appreciation Q1 2025","totalRecipients":3,"batchId":"batch_20250609_001"},"results":[{"success":true,"link":"https://snappy.com/experience/K9mP3xL7dN","id":"G7nR4bD9mK","experienceId":"exp_2024_john_001"},{"success":true,"link":"https://snappy.com/experience/X2pQ8vB5jL","id":"H8sT6cF2nP","experienceId":"exp_2024_jane_002"},{"success":false,"message":"Gift creation failed","errorCode":40000}]}}},"exampleType":"generated"}},"exampleType":"generated"},"ff5da4c9-d84f-4b68-b828-94280414d6a6":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"errorCode":{"oneOf":[{"type":"number","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errorCode.oneOf.0","typeLabel":"number"},{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errorCode.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"errorCode","typeLabel":"number | 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":{"oneOf":[{"type":"number","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode.oneOf.0","typeLabel":"number"},{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode","typeLabel":"number | 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":"Standard API error response with optional client error details","example":{"status":400,"errorCode":400001,"message":"Bad Request"},"uniqueKey":"","typeLabel":"object"},"examples":{"invalid_URL_parameter_example":{"title":"invalid_URL_parameter_example","value":{"status":400,"errorCode":41000,"message":"Invalid URL parameter"}},"invalid_URL_parameter_value_example":{"title":"invalid_URL_parameter_value_example","value":{"status":400,"errorCode":42000,"message":"Invalid URL parameter value"}},"missing_mandatory_parameter_example":{"title":"missing_mandatory_parameter_example","value":{"status":400,"errorCode":43000,"message":"Missing mandatory parameter"}}},"exampleType":"examples"}},"exampleType":"examples"},"7f623639-34a4-4eb4-929f-6a152885fb9a":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","description":"Standard API error response with optional client error details","required":["status","errorCode","message"],"example":{"status":401,"errorCode":401001,"message":"Unauthorized"},"properties":{"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"errorCode":{"oneOf":[{"type":"number","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errorCode.oneOf.0","typeLabel":"number"},{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errorCode.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"errorCode","typeLabel":"number | 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":{"oneOf":[{"type":"number","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode.oneOf.0","typeLabel":"number"},{"type":"string","description":"Internal error code, helps Snappy's technical team to troubleshoot if needed.","example":10000,"isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].errorCode","typeLabel":"number | 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":401001,"message":"Unauthorized"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"671690a1-fef8-4903-8152-d1a54a767883":{"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"}},"4f58f219-ce19-407f-ae4a-9e2c2ba09b78":{"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 demo gift - Snappy API Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T13:54:34.402Z","gitLastModified":"2026-06-17T14:04:15.000Z","originalFileLocation":"modules/api/v2/gifts/create-demo-gift.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 non-claimable demo gifst to preview and test the full recipient experience without incurring any costs. ###### Required fields: - campaignId - the Campaign ID to send under - recipients - array of demo recipients ###### Optional fields: - customization - Gift Customization overrides - metadata - optional key-value pairs (max 50 pairs) - Request-Source header - source of the request ###### Behavior Notes: - Demo gifts are free and do not affect your Account\u0026#x27;s budget or Billing Method. - Demo gifts cannot be redeemed for an actual product - they\u0026#x27;re for preview only. - The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end. - Same request body shape as Create gifts. #### Permissions - Requires: gifts:create:demo\">\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 demo gift - Snappy API Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use this endpoint to create non-claimable demo gifst to preview and test the full recipient experience without incurring any costs. ###### Required fields: - campaignId - the Campaign ID to send under - recipients - array of demo recipients ###### Optional fields: - customization - Gift Customization overrides - metadata - optional key-value pairs (max 50 pairs) - Request-Source header - source of the request ###### Behavior Notes: - Demo gifts are free and do not affect your Account\u0026#x27;s budget or Billing Method. - Demo gifts cannot be redeemed for an actual product - they\u0026#x27;re for preview only. - The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end. - Same request body shape as Create gifts. #### Permissions - Requires: gifts:create:demo\">\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/gifts/create-demo-gift\">\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=Gifts\u0026amp;title=Create+demo+gift\u0026amp;description=Use+this+endpoint+to+create+non-claimable+demo+gifst+to+preview+and+test+the+full+recipient+experience+without+incurring+any+costs.%0A%0A%23%23%23%23%23%23+Required+fields%3A%0A-+%60\u0026amp;theme=9793b5d79242210c7d69f96c\u0026amp;signature=760f07807f63a7bbcae1954d6b04fb8d784f506d845375489eb812bae44e6741\">\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 demo gift - Snappy API Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use this endpoint to create non-claimable demo gifst to preview and test the full recipient experience without incurring any costs. ###### Required fields: - campaignId - the Campaign ID to send under - recipients - array of demo recipients ###### Optional fields: - customization - Gift Customization overrides - metadata - optional key-value pairs (max 50 pairs) - Request-Source header - source of the request ###### Behavior Notes: - Demo gifts are free and do not affect your Account\u0026#x27;s budget or Billing Method. - Demo gifts cannot be redeemed for an actual product - they\u0026#x27;re for preview only. - The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end. - Same request body shape as Create gifts. #### Permissions - Requires: gifts:create:demo\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://snappy-32aaf7de.mintlify.app/_mintlify/api/og/v2?division=Gifts\u0026amp;title=Create+demo+gift\u0026amp;description=Use+this+endpoint+to+create+non-claimable+demo+gifst+to+preview+and+test+the+full+recipient+experience+without+incurring+any+costs.%0A%0A%23%23%23%23%23%23+Required+fields%3A%0A-+%60\u0026amp;theme=9793b5d79242210c7d69f96c\u0026amp;signature=760f07807f63a7bbcae1954d6b04fb8d784f506d845375489eb812bae44e6741\">\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/gifts/create-demo-gift\">\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/gifts/create-demo-gift.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/gifts/create-demo-gift#webpage\",\"url\":\"https://docs.snappy.com/modules/api/v2/gifts/create-demo-gift\",\"name\":\"Create demo gift\",\"description\":\"Use this endpoint to create non-claimable demo gifst to preview and test the full recipient experience without incurring any costs. ###### Required fields: - campaignId - the Campaign ID to send under - recipients - array of demo recipients ###### Optional fields: - customization - Gift Customization overrides - metadata - optional key-value pairs (max 50 pairs) - Request-Source header - source of the request ###### Behavior Notes: - Demo gifts are free and do not affect your Account's budget or Billing Method. - Demo gifts cannot be redeemed for an actual product - they're for preview only. - The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end. - Same request body shape as Create gifts. #### Permissions - Requires: gifts:create:demo\",\"dateModified\":\"2026-06-17T14:04:15.000Z\",\"isPartOf\":{\"@id\":\"https://docs.snappy.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.snappy.com/modules/api/v2/gifts/create-demo-gift#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.snappy.com/modules/api/v2/gifts/create-demo-gift#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Gifting\",\"item\":\"https://docs.snappy.com/modules/api/v2/campaigns/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gifts\",\"item\":\"https://docs.snappy.com/modules/api/v2/gifts/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create demo gift\",\"item\":\"https://docs.snappy.com/modules/api/v2/gifts/create-demo-gift\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.snappy.com/modules/api/v2/gifts/create-demo-gift#apireference\",\"headline\":\"Create demo gift\",\"name\":\"Create demo gift\",\"description\":\"Use this endpoint to create non-claimable demo gifst to preview and test the full recipient experience without incurring any costs. ###### Required fields: - campaignId - the Campaign ID to send under - recipients - array of demo recipients ###### Optional fields: - customization - Gift Customization overrides - metadata - optional key-value pairs (max 50 pairs) - Request-Source header - source of the request ###### Behavior Notes: - Demo gifts are free and do not affect your Account's budget or Billing Method. - Demo gifts cannot be redeemed for an actual product - they're for preview only. - The recipient experience is fully interactive: unwrapping animation, collection browsing, etc. Just no Order is placed at the end. - Same request body shape as Create gifts. #### Permissions - Requires: gifts:create:demo\",\"url\":\"https://docs.snappy.com/modules/api/v2/gifts/create-demo-gift\",\"mainEntityOfPage\":{\"@id\":\"https://docs.snappy.com/modules/api/v2/gifts/create-demo-gift#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","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}","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","description":"Use this endpoint to search for and retrieve a list of gifts based on your specified criteria - campaign, status, sending channels, recipient, and more.\n\n###### Filtering options:\n- `campaignIds` - comma-separated list of Campaign IDs (min 1 item)\n- `keys` - comma-separated list of idempotency keys\n- `statuses` - comma-separated list of gift statuses (`unopened`, `opened`, `unwrapped`, `claimed`, `expired`)\n- `sendingChannels` - comma-separated list of sending channels (`mail`, `sms`, `link`, `code`, `slack`, `teams`)\n- `externalRecipientId` - filter by the recipient's external (your-system) ID\n- `experienceId` - filter by experience ID\n- `invoiceId` - filter by invoice ID\n- `createdBefore` / `createdAfter` - YYYY-MM-DD date bounds (exclusive)\n- `fields` - comma-separated field projection. Valid values: `id`, `status`, `budgetPlan`, `sendingChannels`, `tyn`, `expirationDate`, `createdAt`, `link`, `campaignId`, `metadata`, `full`\n- `expand` - comma-separated objects to include in the response. Valid values: `finalCost`, `deliveryDetails`, `estimatedCost`, `recipient`, `orders`, `customization`\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-100, default `100`)\n\n###### Please note:\n- The default `fields` set returns `id`, `link`, and `status` only. Use `fields=full` for the complete Gift shape, or specify the fields you need.\n- Use `expand` to inline related objects like `recipient`, `orders`, and `finalCost` - by default these are not included.\n- The `senderId` and `senderEmail` parameters are **deprecated** - do not use them in new integrations.\n\n#### Permissions\n- Requires: `gifts:read:masked` or `gifts:read:unmasked`","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}","description":"Use this endpoint to retrieve a specific Gift by its ID. Useful for tracking delivery status, retrieving final gift cost, or reviewing the recipient and campaign context.\n\n###### Required fields:\n- `giftId` - the Gift identifier, passed as a path parameter\n\n###### Optional parameters:\n- `expand` - comma-separated objects to inline (`finalCost`, `deliveryDetails`, `estimatedCost`, `recipient`, `orders`, `customization`)\n- `Request-Source` header - source of the request\n\n###### Please note:\n- Use `expand=orders` to retrieve the full order history including cancelled orders.\n- Use `expand=finalCost` to retrieve the actual cost after the gift has been claimed.\n\n#### Permissions\n- Requires: `gifts:read:masked` or `gifts:read:unmasked`","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 demo gift - 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"]}