# Export KINTRA_API for your environment first; the base URL is on the introduction page.KEY="YOUR_TENANT_KEY_ID"SECRET="YOUR_SIGNING_SECRET"# The signature covers the path and query exactly as sent, so both are split# off the base URL and reused for the request line below.API_PATH="/${KINTRA_API#*://*/}"API_HOST="${KINTRA_API%"$API_PATH"}"METHOD="POST"PATH_AND_QUERY="$API_PATH/gateway/rewards"# One compact line, signed and sent unchanged. The server signs a# re-serialization of the body it parsed, so reformatting this fails with a 401.BODY='{"title":"YOUR_TITLE","xp_cost":0}'TIMESTAMP="$(date +%s)"SIGNATURE="$(printf '%s' "$TIMESTAMP$METHOD$PATH_AND_QUERY$BODY" \ | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $NF}')"curl -sS -w '\n%{http_code}' -X "$METHOD" "$API_HOST$PATH_AND_QUERY" \ -H "X-Tenant-Key: $KEY" \ -H "X-Tenant-Timestamp: $TIMESTAMP" \ -H "X-Tenant-Signature: $SIGNATURE" \ -H "Content-Type: application/json" \ -H "X-Idempotency-Key: YOUR_IDEMPOTENCY_KEY" \ --data-binary "$BODY"
Creates a reward that customers can redeem with XP. title and xp_cost are required; description, metadata, min_tier_id and a status of initialized or published are optional. A reward left at initialized can still be deleted, so the usual order is to create it, check it, then move it to published with the update route. The response data carries the new reward id. X-Idempotency-Key is required: a missing key returns 400 IDEMPOTENCY_KEY_REQUIRED, and a replay returns the stored response. Reusing a key with a different request returns 422 IDEMPOTENCY_KEY_CONFLICT, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.
POST
/
gateway
/
rewards
cURL
# Export KINTRA_API for your environment first; the base URL is on the introduction page.KEY="YOUR_TENANT_KEY_ID"SECRET="YOUR_SIGNING_SECRET"# The signature covers the path and query exactly as sent, so both are split# off the base URL and reused for the request line below.API_PATH="/${KINTRA_API#*://*/}"API_HOST="${KINTRA_API%"$API_PATH"}"METHOD="POST"PATH_AND_QUERY="$API_PATH/gateway/rewards"# One compact line, signed and sent unchanged. The server signs a# re-serialization of the body it parsed, so reformatting this fails with a 401.BODY='{"title":"YOUR_TITLE","xp_cost":0}'TIMESTAMP="$(date +%s)"SIGNATURE="$(printf '%s' "$TIMESTAMP$METHOD$PATH_AND_QUERY$BODY" \ | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $NF}')"curl -sS -w '\n%{http_code}' -X "$METHOD" "$API_HOST$PATH_AND_QUERY" \ -H "X-Tenant-Key: $KEY" \ -H "X-Tenant-Timestamp: $TIMESTAMP" \ -H "X-Tenant-Signature: $SIGNATURE" \ -H "Content-Type: application/json" \ -H "X-Idempotency-Key: YOUR_IDEMPOTENCY_KEY" \ --data-binary "$BODY"
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"KINTRA","colors":{"primary":"#35cbff","light":"#5be7ff","dark":"#0b7fa3"},"logo":{"light":"https://mintcdn.com/kintra/aV869_4X610yKJzW/logo/light.png?fit=max\u0026auto=format\u0026n=aV869_4X610yKJzW\u0026q=85\u0026s=d55bc842096a5d67e57c9ab099d58762","dark":"https://mintcdn.com/kintra/aV869_4X610yKJzW/logo/dark.png?fit=max\u0026auto=format\u0026n=aV869_4X610yKJzW\u0026q=85\u0026s=e0a69c1f9fff02d0cacd13175c0b4336"},"favicon":"https://mintcdn.com/kintra/aV869_4X610yKJzW/favicon.ico?fit=max\u0026auto=format\u0026n=aV869_4X610yKJzW\u0026q=85\u0026s=136dbc7fc4ffe42622617d330e1d8f34","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"],"prefill":true,"autogenerate":true}},"appearance":{"default":"dark","strict":true},"background":{"color":{"dark":"#121212"}},"fonts":{"heading":{"family":"Plus Jakarta Sans"},"body":{"family":"Plus Jakarta Sans"}},"banner":{"content":"Production environment","dismissible":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kintra","hasAudioNarration":false,"actualSubdomain":"kintra","customDomains":["docs.kintra.io"],"gitSource":{"type":"github","owner":"marco-pellar","repo":"kintra-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6a82feba3ea465de84fb99ea","collectionId":"93576bd7-eee2-4565-b6b0-ced101e57af4","liveDeploymentHistoryId":"6a82feba3ea465de84fb99ea","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a82feba3ea465de84fb99ea:success","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API reference","count":94},{"language":"default","tag":"Portal API","count":59},{"language":"default","tag":"Gateway API","count":34},{"language":"default","tag":"Customers","count":24},{"language":"default","tag":"Documentation","count":13},{"language":"default","tag":"Rewards","count":11},{"language":"default","tag":"Tiers","count":11},{"language":"default","tag":"Analytics","count":10},{"language":"default","tag":"Cohorts","count":7},{"language":"default","tag":"Concepts","count":6}]},"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--kintra-code-bg:#0e0e0e;--kintra-code-surface:rgba(255, 255, 255, 0.04);--kintra-code-stroke:rgba(255, 255, 255, 0.08)}pre{background-color:var(--kintra-code-bg);border:1px solid var(--kintra-code-stroke);border-radius:12px}pre code{background-color:transparent;border:0}:not(pre)>code{background-color:var(--kintra-code-surface);border:1px solid var(--kintra-code-stroke);border-radius:6px}"}],"page":{"pagePath":"api-reference/gateway/rewards/create-a-reward","slug":"/api-reference/gateway/rewards/create-a-reward","pageMetadata":{"title":"Create a reward","description":"Creates a reward that customers can redeem with XP. `title` and `xp_cost` are required; `description`, `metadata`, `min_tier_id` and a `status` of `initialized` or `published` are optional. A reward left at `initialized` can still be deleted, so the usual order is to create it, check it, then move it to `published` with the update route. The response `data` carries the new reward `id`. `X-Idempotency-Key` is required: a missing key returns 400 `IDEMPOTENCY_KEY_REQUIRED`, and a replay returns the stored response. Reusing a key with a different request returns 422 `IDEMPOTENCY_KEY_CONFLICT`, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/rewards","href":"/api-reference/gateway/rewards/create-a-reward","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates a reward that customers can redeem with XP. \", _jsx(_components.code, {\n children: \"title\"\n }), \" and \", _jsx(_components.code, {\n children: \"xp_cost\"\n }), \" are required; \", _jsx(_components.code, {\n children: \"description\"\n }), \", \", _jsx(_components.code, {\n children: \"metadata\"\n }), \", \", _jsx(_components.code, {\n children: \"min_tier_id\"\n }), \" and a \", _jsx(_components.code, {\n children: \"status\"\n }), \" of \", _jsx(_components.code, {\n children: \"initialized\"\n }), \" or \", _jsx(_components.code, {\n children: \"published\"\n }), \" are optional. A reward left at \", _jsx(_components.code, {\n children: \"initialized\"\n }), \" can still be deleted, so the usual order is to create it, check it, then move it to \", _jsx(_components.code, {\n children: \"published\"\n }), \" with the update route. The response \", _jsx(_components.code, {\n children: \"data\"\n }), \" carries the new reward \", _jsx(_components.code, {\n children: \"id\"\n }), \". \", _jsx(_components.code, {\n children: \"X-Idempotency-Key\"\n }), \" is required: a missing key returns 400 \", _jsx(_components.code, {\n children: \"IDEMPOTENCY_KEY_REQUIRED\"\n }), \", and a replay returns the stored response. Reusing a key with a different request returns 422 \", _jsx(_components.code, {\n children: \"IDEMPOTENCY_KEY_CONFLICT\"\n }), \", and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.\"]\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 a reward","description":"Creates a reward that customers can redeem with XP. `title` and `xp_cost` are required; `description`, `metadata`, `min_tier_id` and a `status` of `initialized` or `published` are optional. A reward left at `initialized` can still be deleted, so the usual order is to create it, check it, then move it to `published` with the update route. The response `data` carries the new reward `id`. `X-Idempotency-Key` is required: a missing key returns 400 `IDEMPOTENCY_KEY_REQUIRED`, and a replay returns the stored response. Reusing a key with a different request returns 422 `IDEMPOTENCY_KEY_CONFLICT`, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/rewards","href":"/api-reference/gateway/rewards/create-a-reward","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Creates a reward that customers can redeem with XP. `title` and `xp_cost` are required; `description`, `metadata`, `min_tier_id` and a `status` of `initialized` or `published` are optional. A reward left at `initialized` can still be deleted, so the usual order is to create it, check it, then move it to `published` with the update route. The response `data` carries the new reward `id`. `X-Idempotency-Key` is required: a missing key returns 400 `IDEMPOTENCY_KEY_REQUIRED`, and a replay returns the stored response. Reusing a key with a different request returns 422 `IDEMPOTENCY_KEY_CONFLICT`, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.","operationId":"CreateReward","parameters":["af974e4b-fd28-4459-a480-e9820a8c94bb","bec1563e-423d-48c2-ab0b-2af2e47450bc","22ba016a-e5dc-4498-9b12-39b60cb184ad"],"requestBody":"2e874700-cfa5-4bdf-aa45-11bc97eee874","responses":{"200":"86287926-4cad-4966-a493-3845b9a0b540","201":"3cd70117-7455-4d39-a0cf-e2e5f79d203c","401":"defd7c3c-b385-48c5-9112-16edf004319b","404":"8582d56c-0544-4750-b33f-ee83504a6eee","500":"9bd3377a-ed88-46d5-b58a-c101ad9fb9c1"},"security":["a54505a0-38ea-4bcb-b526-67c25246f898"],"summary":"Create a reward","tags":["Rewards"],"x-codeSamples":[{"label":"cURL","lang":"bash","source":"# Export KINTRA_API for your environment first; the base URL is on the introduction page.\nKEY=\"YOUR_TENANT_KEY_ID\"\nSECRET=\"YOUR_SIGNING_SECRET\"\n\n# The signature covers the path and query exactly as sent, so both are split\n# off the base URL and reused for the request line below.\nAPI_PATH=\"/${KINTRA_API#*://*/}\"\nAPI_HOST=\"${KINTRA_API%\"$API_PATH\"}\"\nMETHOD=\"POST\"\nPATH_AND_QUERY=\"$API_PATH/gateway/rewards\"\n\n# One compact line, signed and sent unchanged. The server signs a\n# re-serialization of the body it parsed, so reformatting this fails with a 401.\nBODY='{\"title\":\"YOUR_TITLE\",\"xp_cost\":0}'\n\nTIMESTAMP=\"$(date +%s)\"\nSIGNATURE=\"$(printf '%s' \"$TIMESTAMP$METHOD$PATH_AND_QUERY$BODY\" \\\n | openssl dgst -sha256 -hmac \"$SECRET\" | awk '{print $NF}')\"\n\ncurl -sS -w '\\n%{http_code}' -X \"$METHOD\" \"$API_HOST$PATH_AND_QUERY\" \\\n -H \"X-Tenant-Key: $KEY\" \\\n -H \"X-Tenant-Timestamp: $TIMESTAMP\" \\\n -H \"X-Tenant-Signature: $SIGNATURE\" \\\n -H \"Content-Type: application/json\" \\\n -H \"X-Idempotency-Key: YOUR_IDEMPOTENCY_KEY\" \\\n --data-binary \"$BODY\"\n"},{"label":"TypeScript","lang":"typescript","source":"import { createHmac } from 'node:crypto'\n\n// Export KINTRA_API for your environment first; the base URL is on the introduction page.\nconst { origin, pathname } = new URL(process.env.KINTRA_API ?? '')\nconst key = 'YOUR_TENANT_KEY_ID'\nconst secret = 'YOUR_SIGNING_SECRET'\n\nconst method = 'POST'\n// The signature covers the path and query as sent, starting at the API prefix.\nconst pathAndQuery = `${pathname}/gateway/rewards`\n\n// Serialized once and used twice. The server signs a re-serialization of the\n// body it parsed, so the bytes signed and the bytes sent have to be identical.\nconst body = JSON.stringify({\n \"title\": \"YOUR_TITLE\",\n \"xp_cost\": 0\n})\n\nconst timestamp = Math.floor(Date.now() / 1000).toString()\nconst signature = createHmac('sha256', secret).update(`${timestamp}${method}${pathAndQuery}${body}`).digest('hex')\n\nconst response = await fetch(`${origin}${pathAndQuery}`, {\n method,\n headers: {\n 'X-Tenant-Key': key,\n 'X-Tenant-Timestamp': timestamp,\n 'X-Tenant-Signature': signature,\n 'Content-Type': 'application/json',\n 'X-Idempotency-Key': 'YOUR_IDEMPOTENCY_KEY'\n },\n body\n})\n\nconsole.log(response.status, await response.json())\n"}],"method":"post","type":"path","servers":["171298bf-76a0-4c10-b6b3-6b42fa4e08ed"],"path":"/gateway/rewards","baseUrlOptions":["https://api.kintra.io/api/v1"],"title":"Create a reward","codeSamples":[{"label":"cURL","lang":"bash","source":"# Export KINTRA_API for your environment first; the base URL is on the introduction page.\nKEY=\"YOUR_TENANT_KEY_ID\"\nSECRET=\"YOUR_SIGNING_SECRET\"\n\n# The signature covers the path and query exactly as sent, so both are split\n# off the base URL and reused for the request line below.\nAPI_PATH=\"/${KINTRA_API#*://*/}\"\nAPI_HOST=\"${KINTRA_API%\"$API_PATH\"}\"\nMETHOD=\"POST\"\nPATH_AND_QUERY=\"$API_PATH/gateway/rewards\"\n\n# One compact line, signed and sent unchanged. The server signs a\n# re-serialization of the body it parsed, so reformatting this fails with a 401.\nBODY='{\"title\":\"YOUR_TITLE\",\"xp_cost\":0}'\n\nTIMESTAMP=\"$(date +%s)\"\nSIGNATURE=\"$(printf '%s' \"$TIMESTAMP$METHOD$PATH_AND_QUERY$BODY\" \\\n | openssl dgst -sha256 -hmac \"$SECRET\" | awk '{print $NF}')\"\n\ncurl -sS -w '\\n%{http_code}' -X \"$METHOD\" \"$API_HOST$PATH_AND_QUERY\" \\\n -H \"X-Tenant-Key: $KEY\" \\\n -H \"X-Tenant-Timestamp: $TIMESTAMP\" \\\n -H \"X-Tenant-Signature: $SIGNATURE\" \\\n -H \"Content-Type: application/json\" \\\n -H \"X-Idempotency-Key: YOUR_IDEMPOTENCY_KEY\" \\\n --data-binary \"$BODY\"\n"},{"label":"TypeScript","lang":"typescript","source":"import { createHmac } from 'node:crypto'\n\n// Export KINTRA_API for your environment first; the base URL is on the introduction page.\nconst { origin, pathname } = new URL(process.env.KINTRA_API ?? '')\nconst key = 'YOUR_TENANT_KEY_ID'\nconst secret = 'YOUR_SIGNING_SECRET'\n\nconst method = 'POST'\n// The signature covers the path and query as sent, starting at the API prefix.\nconst pathAndQuery = `${pathname}/gateway/rewards`\n\n// Serialized once and used twice. The server signs a re-serialization of the\n// body it parsed, so the bytes signed and the bytes sent have to be identical.\nconst body = JSON.stringify({\n \"title\": \"YOUR_TITLE\",\n \"xp_cost\": 0\n})\n\nconst timestamp = Math.floor(Date.now() / 1000).toString()\nconst signature = createHmac('sha256', secret).update(`${timestamp}${method}${pathAndQuery}${body}`).digest('hex')\n\nconst response = await fetch(`${origin}${pathAndQuery}`, {\n method,\n headers: {\n 'X-Tenant-Key': key,\n 'X-Tenant-Timestamp': timestamp,\n 'X-Tenant-Signature': signature,\n 'Content-Type': 'application/json',\n 'X-Idempotency-Key': 'YOUR_IDEMPOTENCY_KEY'\n },\n body\n})\n\nconsole.log(response.status, await response.json())\n"}],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.title":"\u003cstring>","body.xp_cost":123,"body.description":"\u003cstring>","body.min_tier_id.oneOf.0":"\u003cstring>"}]},"dependencies":{"parameters":{"af974e4b-fd28-4459-a480-e9820a8c94bb":{"description":"Hex HMAC-SHA256 of the timestamp, the uppercase method, the url as sent and the request body, keyed by the signing secret.","in":"header","name":"X-Tenant-Signature","required":true,"schema":{"type":"string","isRequired":true,"description":"Hex HMAC-SHA256 of the timestamp, the uppercase method, the url as sent and the request body, keyed by the signing secret.","uniqueKey":"","typeLabel":"string"}},"bec1563e-423d-48c2-ab0b-2af2e47450bc":{"description":"Unix seconds. Checked before the signature.","in":"header","name":"X-Tenant-Timestamp","required":true,"schema":{"type":"string","isRequired":true,"description":"Unix seconds. Checked before the signature.","uniqueKey":"","typeLabel":"string"}},"22ba016a-e5dc-4498-9b12-39b60cb184ad":{"description":"Unique key for this write. A replay returns the stored response; the same key with a different body conflicts.","in":"header","name":"X-Idempotency-Key","required":true,"schema":{"format":"uuid","type":"string","isRequired":true,"description":"Unique key for this write. A replay returns the stored response; the same key with a different body conflicts.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"xp_cost":{"format":"double","type":"number","isRequired":true,"uniqueKey":"xp_cost","typeLabel":"number\u003cdouble>"},"description":{"type":"string","uniqueKey":"description","typeLabel":"string"},"metadata":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"metadata.additionalProperties","typeLabel":"any"},"description":"Construct a type with a set of properties K of type T","properties":{},"type":"object","uniqueKey":"metadata","typeLabel":"object"},"min_tier_id":{"oneOf":[{"description":"Tier gate — UUID of the minimum tier, or `''`/omitted for all tiers.","type":"string","uniqueKey":"min_tier_id.oneOf.0","typeLabel":"string"},{"description":"Tier gate — UUID of the minimum tier, or `''`/omitted for all tiers.","type":"null","uniqueKey":"min_tier_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"min_tier_id","typeLabel":"string | null"},"status":{"enum":["initialized","published"],"type":"string","uniqueKey":"status","typeLabel":"enum\u003cstring>"}},"required":["title","xp_cost"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"title":"\u003cstring>","xp_cost":123,"description":"\u003cstring>","metadata":{},"min_tier_id":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"86287926-4cad-4966-a493-3845b9a0b540":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.id","typeLabel":"string"}},"required":["id"],"type":"object","uniqueKey":"data","typeLabel":"object"},"errors":{"items":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"path":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"}},"required":["path","message"],"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"required":["success"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":{"id":"\u003cstring>"},"errors":[{"message":"\u003cstring>","path":"\u003cstring>"}],"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Ok","exampleType":"generated"},"3cd70117-7455-4d39-a0cf-e2e5f79d203c":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.id","typeLabel":"string"}},"required":["id"],"type":"object","uniqueKey":"data","typeLabel":"object"},"errors":{"items":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"path":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"}},"required":["path","message"],"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"required":["success"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":{"id":"\u003cstring>"},"errors":[{"message":"\u003cstring>","path":"\u003cstring>"}],"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"","exampleType":"generated"},"defd7c3c-b385-48c5-9112-16edf004319b":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"oneOf":[{"enum":[null],"type":"number","uniqueKey":"data.oneOf.0","typeLabel":"enum\u003cnumber>"},{"enum":[null],"type":"null","uniqueKey":"data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data","typeLabel":"enum\u003cnumber> | null"},"errors":{"items":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"path":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"}},"required":["path","message"],"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"required":["success"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":null,"errors":[{"message":"\u003cstring>","path":"\u003cstring>"}],"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Unauthorized","exampleType":"generated"},"8582d56c-0544-4750-b33f-ee83504a6eee":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"oneOf":[{"enum":[null],"type":"number","uniqueKey":"data.oneOf.0","typeLabel":"enum\u003cnumber>"},{"enum":[null],"type":"null","uniqueKey":"data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data","typeLabel":"enum\u003cnumber> | null"},"errors":{"items":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"path":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"}},"required":["path","message"],"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"required":["success"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":null,"errors":[{"message":"\u003cstring>","path":"\u003cstring>"}],"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Tenant not found","exampleType":"generated"},"9bd3377a-ed88-46d5-b58a-c101ad9fb9c1":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"oneOf":[{"enum":[null],"type":"number","uniqueKey":"data.oneOf.0","typeLabel":"enum\u003cnumber>"},{"enum":[null],"type":"null","uniqueKey":"data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data","typeLabel":"enum\u003cnumber> | null"},"errors":{"items":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"path":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].path","typeLabel":"string"}},"required":["path","message"],"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"required":["success"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":null,"errors":[{"message":"\u003cstring>","path":"\u003cstring>"}],"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Internal server error","exampleType":"generated"}},"security":{"a54505a0-38ea-4bcb-b526-67c25246f898":{"tenant_api_key":{"description":"Tenant API key","in":"header","name":"x-tenant-key","type":"apiKey","scopes":[]}}},"servers":{"171298bf-76a0-4c10-b6b3-6b42fa4e08ed":{"description":"Production environment","url":"https://api.kintra.io/api/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"Tenant API key","in":"header","name":"x-tenant-key","type":"apiKey","scopes":[]},"schema":{"title":"x-tenant-key","type":"string","description":"Tenant API key","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"tenant_api_key","name":"x-tenant-key"}],"title":"tenant_api_key"}]},"originalFileLocation":"openapi/kintra-gateway.json"},"subdomain":"kintra","siteName":"KINTRA","title":"Create a reward - KINTRA","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-17T12:30:03.617Z","originalFileLocation":"api-reference/gateway/rewards/create-a-reward.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";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=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a reward that customers can redeem with XP. title and xp_cost are required; description, metadata, min_tier_id and a status of initialized or published are optional. A reward left at initialized can still be deleted, so the usual order is to create it, check it, then move it to published with the update route. The response data carries the new reward id. X-Idempotency-Key is required: a missing key returns 400 IDEMPOTENCY_KEY_REQUIRED, and a replay returns the stored response. Reusing a key with a different request returns 422 IDEMPOTENCY_KEY_CONFLICT, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.\">\u003cmeta data-mint-head name=\"application-name\" content=\"KINTRA\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kintra/ZtFEHcUbLmdYiJ-1/_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/kintra/ZtFEHcUbLmdYiJ-1/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kintra/ZtFEHcUbLmdYiJ-1/_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/kintra/ZtFEHcUbLmdYiJ-1/_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/kintra/ZtFEHcUbLmdYiJ-1/_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/kintra/ZtFEHcUbLmdYiJ-1/_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/kintra/ZtFEHcUbLmdYiJ-1/_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/kintra/ZtFEHcUbLmdYiJ-1/_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/kintra/ZtFEHcUbLmdYiJ-1/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a reward - KINTRA\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a reward that customers can redeem with XP. title and xp_cost are required; description, metadata, min_tier_id and a status of initialized or published are optional. A reward left at initialized can still be deleted, so the usual order is to create it, check it, then move it to published with the update route. The response data carries the new reward id. X-Idempotency-Key is required: a missing key returns 400 IDEMPOTENCY_KEY_REQUIRED, and a replay returns the stored response. Reusing a key with a different request returns 422 IDEMPOTENCY_KEY_CONFLICT, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"KINTRA\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kintra.mintlify.app/_mintlify/api/og/v2?division=Rewards\u0026amp;title=Create+a+reward\u0026amp;description=Creates+a+reward+that+customers+can+redeem+with+XP.+%60title%60+and+%60xp_cost%60+are+required%3B+%60description%60%2C+%60metadata%60%2C+%60min_tier_id%60+and+a+%60status%60+of+%60initialized%60\u0026amp;theme=7168baa81e08787f570d323b\u0026amp;signature=ec8fe6f5f073d33292e9ddb891f684f5cc1bac6c41782a004f4cb7ba2fdece0b\">\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 a reward - KINTRA\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a reward that customers can redeem with XP. title and xp_cost are required; description, metadata, min_tier_id and a status of initialized or published are optional. A reward left at initialized can still be deleted, so the usual order is to create it, check it, then move it to published with the update route. The response data carries the new reward id. X-Idempotency-Key is required: a missing key returns 400 IDEMPOTENCY_KEY_REQUIRED, and a replay returns the stored response. Reusing a key with a different request returns 422 IDEMPOTENCY_KEY_CONFLICT, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kintra.mintlify.app/_mintlify/api/og/v2?division=Rewards\u0026amp;title=Create+a+reward\u0026amp;description=Creates+a+reward+that+customers+can+redeem+with+XP.+%60title%60+and+%60xp_cost%60+are+required%3B+%60description%60%2C+%60metadata%60%2C+%60min_tier_id%60+and+a+%60status%60+of+%60initialized%60\u0026amp;theme=7168baa81e08787f570d323b\u0026amp;signature=ec8fe6f5f073d33292e9ddb891f684f5cc1bac6c41782a004f4cb7ba2fdece0b\">\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/kintra/ZtFEHcUbLmdYiJ-1/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"KINTRA\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#35cbff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/gateway/rewards/create-a-reward.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.kintra.io/#organization\",\"name\":\"KINTRA\",\"url\":\"https://docs.kintra.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kintra/aV869_4X610yKJzW/logo/light.png?fit=max\u0026auto=format\u0026n=aV869_4X610yKJzW\u0026q=85\u0026s=d55bc842096a5d67e57c9ab099d58762\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.kintra.io#website\",\"name\":\"KINTRA\",\"url\":\"https://docs.kintra.io\",\"publisher\":{\"@id\":\"https://docs.kintra.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward#webpage\",\"url\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward\",\"name\":\"Create a reward\",\"description\":\"Creates a reward that customers can redeem with XP. title and xp_cost are required; description, metadata, min_tier_id and a status of initialized or published are optional. A reward left at initialized can still be deleted, so the usual order is to create it, check it, then move it to published with the update route. The response data carries the new reward id. X-Idempotency-Key is required: a missing key returns 400 IDEMPOTENCY_KEY_REQUIRED, and a replay returns the stored response. Reusing a key with a different request returns 422 IDEMPOTENCY_KEY_CONFLICT, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.\",\"dateModified\":\"2026-08-17T12:30:03.617Z\",\"isPartOf\":{\"@id\":\"https://docs.kintra.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Gateway API\",\"item\":\"https://docs.kintra.io/api-reference/gateway/customers/list-customers\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rewards\",\"item\":\"https://docs.kintra.io/api-reference/gateway/rewards/list-rewards\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a reward\",\"item\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward#apireference\",\"headline\":\"Create a reward\",\"name\":\"Create a reward\",\"description\":\"Creates a reward that customers can redeem with XP. title and xp_cost are required; description, metadata, min_tier_id and a status of initialized or published are optional. A reward left at initialized can still be deleted, so the usual order is to create it, check it, then move it to published with the update route. The response data carries the new reward id. X-Idempotency-Key is required: a missing key returns 400 IDEMPOTENCY_KEY_REQUIRED, and a replay returns the stored response. Reusing a key with a different request returns 422 IDEMPOTENCY_KEY_CONFLICT, and replaying a key whose first request is still in flight returns 409 with the same code. A first request that never recorded a response keeps returning 409 until the key ages out, so send a fresh key rather than retrying that one.\",\"url\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/create-a-reward#webpage\"},\"dateModified\":\"2026-08-17T12:30:03.617Z\",\"publisher\":{\"@id\":\"https://docs.kintra.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.kintra.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"KINTRA\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"KINTRA","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"Introduction","href":"/api-reference/overview"}]},{"group":"Portal API","pages":[{"group":"Service","pages":[{"title":"Get service information","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /info","href":"/api-reference/portal/service/get-service-information"}]},{"group":"Reference data","pages":[{"title":"Get reference data","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /system/masterdata","href":"/api-reference/portal/reference-data/get-reference-data"}]},{"group":"Analytics","pages":[{"title":"Get an internal transaction timeline","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/analytics/internal-transactions/timeline","href":"/api-reference/portal/analytics/get-an-internal-transaction-timeline"},{"title":"Get an analytics summary","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/analytics/summary","href":"/api-reference/portal/analytics/get-an-analytics-summary"},{"title":"List top clubs by membership","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/analytics/top-clubs","href":"/api-reference/portal/analytics/list-top-clubs-by-membership"},{"title":"List top countries by customer count","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/analytics/top-countries","href":"/api-reference/portal/analytics/list-top-countries-by-customer-count"},{"title":"List top rewards by redemptions","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/analytics/top-rewards","href":"/api-reference/portal/analytics/list-top-rewards-by-redemptions"}]},{"group":"API keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/api-keys","href":"/api-reference/portal/api-keys/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/api-keys","href":"/api-reference/portal/api-keys/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json delete /tenant/{tenantId}/api-keys/{id}","href":"/api-reference/portal/api-keys/revoke-an-api-key"}]},{"group":"Attributes","pages":[{"title":"List attribute definitions","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/attributes","href":"/api-reference/portal/attributes/list-attribute-definitions"},{"title":"Create an attribute definition","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/attributes","href":"/api-reference/portal/attributes/create-an-attribute-definition"},{"title":"Delete an attribute definition","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json delete /tenant/{tenantId}/attributes/{attributeId}","href":"/api-reference/portal/attributes/delete-an-attribute-definition"},{"title":"Rename an attribute definition","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json patch /tenant/{tenantId}/attributes/{attributeId}","href":"/api-reference/portal/attributes/rename-an-attribute-definition"},{"title":"Restore a deleted attribute definition","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/attributes/{attributeId}/restore","href":"/api-reference/portal/attributes/restore-a-deleted-attribute-definition"}]},{"group":"Cohorts","pages":[{"title":"List cohorts","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/cohorts","href":"/api-reference/portal/cohorts/list-cohorts"},{"title":"Create a cohort","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/cohorts","href":"/api-reference/portal/cohorts/create-a-cohort"},{"title":"Preview a cohort rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/cohorts/preview","href":"/api-reference/portal/cohorts/preview-a-cohort-rule"},{"title":"Get a cohort","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/cohorts/{cohortId}","href":"/api-reference/portal/cohorts/get-a-cohort"},{"title":"Delete a cohort","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json delete /tenant/{tenantId}/cohorts/{cohortId}","href":"/api-reference/portal/cohorts/delete-a-cohort"},{"title":"Update a cohort","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json patch /tenant/{tenantId}/cohorts/{cohortId}","href":"/api-reference/portal/cohorts/update-a-cohort"},{"title":"List cohort members","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/cohorts/{cohortId}/members","href":"/api-reference/portal/cohorts/list-cohort-members"}]},{"group":"Customers","pages":[{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/customers","href":"/api-reference/portal/customers/list-customers"},{"title":"Create a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/customers","href":"/api-reference/portal/customers/create-a-customer"},{"title":"Get a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/customers/{customer_id}","href":"/api-reference/portal/customers/get-a-customer"},{"title":"Add a customer to a club","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/customers/{customer_id}/clubs","href":"/api-reference/portal/customers/add-a-customer-to-a-club"},{"title":"Remove a customer from a club","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json delete /tenant/{tenantId}/customers/{customer_id}/clubs/{club_id}","href":"/api-reference/portal/customers/remove-a-customer-from-a-club"},{"title":"Set a customer country","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json put /tenant/{tenantId}/customers/{customer_id}/country","href":"/api-reference/portal/customers/set-a-customer-country"},{"title":"Update a customer status","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json patch /tenant/{tenantId}/customers/{userId}","href":"/api-reference/portal/customers/update-a-customer-status"},{"title":"List customer asset balances","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/customers/{userId}/balances","href":"/api-reference/portal/customers/list-customer-asset-balances"},{"title":"Check customer tier eligibility","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/customers/{userId}/tier/{tierId}/eligibility","href":"/api-reference/portal/customers/check-customer-tier-eligibility"},{"title":"List customer transactions","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/customers/{userId}/transactions","href":"/api-reference/portal/customers/list-customer-transactions"},{"title":"Get a customer XP balance","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/customers/{userId}/xp/balance","href":"/api-reference/portal/customers/get-a-customer-xp-balance"},{"title":"Lock or unlock a customer XP balance","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json put /tenant/{tenantId}/customers/{userId}/xp/lock","href":"/api-reference/portal/customers/lock-or-unlock-a-customer-xp-balance"}]},{"group":"Customer attributes","pages":[{"title":"List attribute values for a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/customers/{customer_id}/attributes","href":"/api-reference/portal/customer-attributes/list-attribute-values-for-a-customer"},{"title":"Set attribute values for a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json put /tenant/{tenantId}/customers/{customer_id}/attributes","href":"/api-reference/portal/customer-attributes/set-attribute-values-for-a-customer"}]},{"group":"Internal transactions","pages":[{"title":"List internal transactions","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/internal-transactions","href":"/api-reference/portal/internal-transactions/list-internal-transactions"},{"title":"Get an internal transaction","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/internal-transactions/{internal_transaction_id}","href":"/api-reference/portal/internal-transactions/get-an-internal-transaction"}]},{"group":"Members","pages":[{"title":"List members","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/members","href":"/api-reference/portal/members/list-members"},{"title":"Add a member","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/members","href":"/api-reference/portal/members/add-a-member"},{"title":"Remove a member","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json delete /tenant/{tenantId}/members/{userId}","href":"/api-reference/portal/members/remove-a-member"}]},{"group":"Onchain assets","pages":[{"title":"List onchain assets","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/onchain-assets","href":"/api-reference/portal/onchain-assets/list-onchain-assets"}]},{"group":"Redemptions","pages":[{"title":"List redemptions","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/redemptions","href":"/api-reference/portal/redemptions/list-redemptions"},{"title":"Get a redemption","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/redemptions/{redemption_id}","href":"/api-reference/portal/redemptions/get-a-redemption"}]},{"group":"Rewards","pages":[{"title":"List rewards","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/rewards","href":"/api-reference/portal/rewards/list-rewards"},{"title":"Create a reward","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/rewards","href":"/api-reference/portal/rewards/create-a-reward"},{"title":"Create a reward image upload URL","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/rewards/image/presigned","href":"/api-reference/portal/rewards/create-a-reward-image-upload-url"},{"title":"Get a reward","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/rewards/{rewardId}","href":"/api-reference/portal/rewards/get-a-reward"},{"title":"Update a reward","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json put /tenant/{tenantId}/rewards/{rewardId}","href":"/api-reference/portal/rewards/update-a-reward"},{"title":"Delete a reward","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json delete /tenant/{tenantId}/rewards/{rewardId}","href":"/api-reference/portal/rewards/delete-a-reward"}]},{"group":"Tiers","pages":[{"title":"List tier rules","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/tiers","href":"/api-reference/portal/tiers/list-tier-rules"},{"title":"Create a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/tiers","href":"/api-reference/portal/tiers/create-a-tier-rule"},{"title":"Get a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/tiers/{tierId}","href":"/api-reference/portal/tiers/get-a-tier-rule"},{"title":"Update a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json put /tenant/{tenantId}/tiers/{tierId}","href":"/api-reference/portal/tiers/update-a-tier-rule"},{"title":"Delete a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json delete /tenant/{tenantId}/tiers/{tierId}","href":"/api-reference/portal/tiers/delete-a-tier-rule"},{"title":"Get a tier member count","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /tenant/{tenantId}/tiers/{tierId}/member-count","href":"/api-reference/portal/tiers/get-a-tier-member-count"}]},{"group":"XP","pages":[{"title":"Award XP to a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/xp/earn","href":"/api-reference/portal/xp/award-xp-to-a-customer"},{"title":"Redeem a reward for a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json post /tenant/{tenantId}/xp/redeem","href":"/api-reference/portal/xp/redeem-a-reward-for-a-customer"}]},{"group":"Account","pages":[{"title":"Get the signed-in account","deprecated":null,"version":null,"openapi":"/openapi/kintra-app.json get /user/me","href":"/api-reference/portal/account/get-the-signed-in-account"}]}]},{"group":"Gateway API","pages":[{"group":"Customers","pages":[{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers","href":"/api-reference/gateway/customers/list-customers"},{"title":"Create a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/customers","href":"/api-reference/gateway/customers/create-a-customer"},{"title":"Get a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/{customer_id}","href":"/api-reference/gateway/customers/get-a-customer"},{"title":"Update a customer status","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json patch /gateway/customers/{userId}","href":"/api-reference/gateway/customers/update-a-customer-status"},{"title":"List customer asset balances","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/{userId}/balances","href":"/api-reference/gateway/customers/list-customer-asset-balances"},{"title":"Add a customer to a club","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/customers/{userId}/clubs","href":"/api-reference/gateway/customers/add-a-customer-to-a-club"},{"title":"Remove a customer from a club","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json delete /gateway/customers/{userId}/clubs/{club_id}","href":"/api-reference/gateway/customers/remove-a-customer-from-a-club"},{"title":"Set a customer country","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json put /gateway/customers/{userId}/country","href":"/api-reference/gateway/customers/set-a-customer-country"},{"title":"Check customer tier eligibility","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/{userId}/tier/{tierId}/eligibility","href":"/api-reference/gateway/customers/check-customer-tier-eligibility"},{"title":"List customer transactions","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/{userId}/transactions","href":"/api-reference/gateway/customers/list-customer-transactions"},{"title":"Get a customer XP balance","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/{userId}/xp/balance","href":"/api-reference/gateway/customers/get-a-customer-xp-balance"},{"title":"Lock or unlock a customer XP balance","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json put /gateway/customers/{userId}/xp/lock","href":"/api-reference/gateway/customers/lock-or-unlock-a-customer-xp-balance"}]},{"group":"Analytics","pages":[{"title":"Get an internal transaction timeline","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/analytics/internal-transactions/timeline","href":"/api-reference/gateway/analytics/get-an-internal-transaction-timeline"},{"title":"Get an analytics summary","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/analytics/summary","href":"/api-reference/gateway/analytics/get-an-analytics-summary"},{"title":"List top clubs by membership","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/analytics/top-clubs","href":"/api-reference/gateway/analytics/list-top-clubs-by-membership"},{"title":"List top countries by customer count","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/analytics/top-countries","href":"/api-reference/gateway/analytics/list-top-countries-by-customer-count"},{"title":"List top rewards by redemptions","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/customers/analytics/top-rewards","href":"/api-reference/gateway/analytics/list-top-rewards-by-redemptions"}]},{"group":"Internal transactions","pages":[{"title":"List internal transactions","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/internal-transactions","href":"/api-reference/gateway/internal-transactions/list-internal-transactions"},{"title":"Get an internal transaction","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/internal-transactions/{internal_transaction_id}","href":"/api-reference/gateway/internal-transactions/get-an-internal-transaction"}]},{"group":"Onchain assets","pages":[{"title":"List onchain assets","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/onchain-assets","href":"/api-reference/gateway/onchain-assets/list-onchain-assets"}]},{"group":"Redemptions","pages":[{"title":"List redemptions","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/redemptions","href":"/api-reference/gateway/redemptions/list-redemptions"},{"title":"Get a redemption","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/redemptions/{redemption_id}","href":"/api-reference/gateway/redemptions/get-a-redemption"}]},{"group":"Rewards","pages":[{"title":"List rewards","description":"Lists your rewards, published and unpublished alike. Call it to render a catalogue for customers, filtering on `status` and `is_active` so only live rewards reach them. Filter with `search`, `xp_cost_from`, `xp_cost_to`, `is_active` and `status`, and page with `page` and `limit`. The response `data` carries `items` alongside `total_count`, `page`, `limit`, `total_pages` and `has_next_page`.","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/rewards","href":"/api-reference/gateway/rewards/list-rewards"},{"title":"Create a reward","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/rewards","href":"/api-reference/gateway/rewards/create-a-reward"},{"title":"Get a reward","description":"Returns one reward by id with `title`, `description`, `xp_cost`, `is_active`, `status`, `min_tier_id`, `metadata` and the `onchain_asset_id` it is denominated in. Call it to render a reward detail view, or to read the current `xp_cost` before offering a redemption. Returns 404 when no reward with that id belongs to your tenant.","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/rewards/{rewardId}","href":"/api-reference/gateway/rewards/get-a-reward"},{"title":"Update a reward","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json put /gateway/rewards/{rewardId}","href":"/api-reference/gateway/rewards/update-a-reward"},{"title":"Delete a reward","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json delete /gateway/rewards/{rewardId}","href":"/api-reference/gateway/rewards/delete-a-reward"}]},{"group":"Tiers","pages":[{"title":"List tier rules","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/tiers","href":"/api-reference/gateway/tiers/list-tier-rules"},{"title":"Create a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/tiers","href":"/api-reference/gateway/tiers/create-a-tier-rule"},{"title":"Get a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json get /gateway/tiers/{tierId}","href":"/api-reference/gateway/tiers/get-a-tier-rule"},{"title":"Update a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json put /gateway/tiers/{tierId}","href":"/api-reference/gateway/tiers/update-a-tier-rule"},{"title":"Delete a tier rule","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json delete /gateway/tiers/{tierId}","href":"/api-reference/gateway/tiers/delete-a-tier-rule"}]},{"group":"XP","pages":[{"title":"Award XP to a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/xp/earn","href":"/api-reference/gateway/xp/award-xp-to-a-customer"},{"title":"Redeem a reward for a customer","deprecated":null,"version":null,"openapi":"/openapi/kintra-gateway.json post /gateway/xp/redeem","href":"/api-reference/gateway/xp/redeem-a-reward-for-a-customer"}]}]}]}]},"title":"Create a reward - KINTRA","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}