# 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="PUT"PATH_AND_QUERY="$API_PATH/gateway/rewards/YOUR_REWARD_ID"# 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","description":"YOUR_DESCRIPTION","xp_cost":0,"is_active":false,"metadata":{},"status":"initialized","min_tier_id":"YOUR_MIN_TIER_ID"}'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"
Updates a reward in place. Every field is optional: send title, description, xp_cost, is_active, metadata, min_tier_id or status, and leave out what you are not changing. This is the route that moves a reward from initialized to published, and the route that flips is_active. Publishing is a one-way move: once a reward is published, is_active is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 REWARD_PUBLISHED. The response data carries success. Returns 404 when no reward with that id belongs to your tenant. 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.
PUT
/
gateway
/
rewards
/
{rewardId}
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="PUT"PATH_AND_QUERY="$API_PATH/gateway/rewards/YOUR_REWARD_ID"# 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","description":"YOUR_DESCRIPTION","xp_cost":0,"is_active":false,"metadata":{},"status":"initialized","min_tier_id":"YOUR_MIN_TIER_ID"}'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"
Freeform reward metadata (full-replace of the jsonb on update). May carry a tenant-scoped
image_key; any client-supplied image_url is rejected — the URL is derived on read.
{"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/update-a-reward","slug":"/api-reference/gateway/rewards/update-a-reward","pageMetadata":{"title":"Update a reward","description":"Updates a reward in place. Every field is optional: send `title`, `description`, `xp_cost`, `is_active`, `metadata`, `min_tier_id` or `status`, and leave out what you are not changing. This is the route that moves a reward from `initialized` to `published`, and the route that flips `is_active`. Publishing is a one-way move: once a reward is `published`, `is_active` is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 `REWARD_PUBLISHED`. The response `data` carries `success`. Returns 404 when no reward with that id belongs to your tenant. `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 put /gateway/rewards/{rewardId}","href":"/api-reference/gateway/rewards/update-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: [\"Updates a reward in place. Every field is optional: send \", _jsx(_components.code, {\n children: \"title\"\n }), \", \", _jsx(_components.code, {\n children: \"description\"\n }), \", \", _jsx(_components.code, {\n children: \"xp_cost\"\n }), \", \", _jsx(_components.code, {\n children: \"is_active\"\n }), \", \", _jsx(_components.code, {\n children: \"metadata\"\n }), \", \", _jsx(_components.code, {\n children: \"min_tier_id\"\n }), \" or \", _jsx(_components.code, {\n children: \"status\"\n }), \", and leave out what you are not changing. This is the route that moves a reward from \", _jsx(_components.code, {\n children: \"initialized\"\n }), \" to \", _jsx(_components.code, {\n children: \"published\"\n }), \", and the route that flips \", _jsx(_components.code, {\n children: \"is_active\"\n }), \". Publishing is a one-way move: once a reward is \", _jsx(_components.code, {\n children: \"published\"\n }), \", \", _jsx(_components.code, {\n children: \"is_active\"\n }), \" is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 \", _jsx(_components.code, {\n children: \"REWARD_PUBLISHED\"\n }), \". The response \", _jsx(_components.code, {\n children: \"data\"\n }), \" carries \", _jsx(_components.code, {\n children: \"success\"\n }), \". Returns 404 when no reward with that id belongs to your tenant. \", _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":"Update a reward","description":"Updates a reward in place. Every field is optional: send `title`, `description`, `xp_cost`, `is_active`, `metadata`, `min_tier_id` or `status`, and leave out what you are not changing. This is the route that moves a reward from `initialized` to `published`, and the route that flips `is_active`. Publishing is a one-way move: once a reward is `published`, `is_active` is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 `REWARD_PUBLISHED`. The response `data` carries `success`. Returns 404 when no reward with that id belongs to your tenant. `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 put /gateway/rewards/{rewardId}","href":"/api-reference/gateway/rewards/update-a-reward","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Updates a reward in place. Every field is optional: send `title`, `description`, `xp_cost`, `is_active`, `metadata`, `min_tier_id` or `status`, and leave out what you are not changing. This is the route that moves a reward from `initialized` to `published`, and the route that flips `is_active`. Publishing is a one-way move: once a reward is `published`, `is_active` is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 `REWARD_PUBLISHED`. The response `data` carries `success`. Returns 404 when no reward with that id belongs to your tenant. `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":"UpdateReward","parameters":["ad8b08d4-7fb0-41c6-a368-ca4f7f149267","8b119235-e91e-4462-ba8a-d5e88c6e6b4b","77849a15-6110-4a9d-b9ce-7540e568b468","1b5d6bbb-5700-498a-a3be-4e3d41769efe"],"requestBody":"767718ab-fdbb-44f3-acdd-89e98e155591","responses":{"200":"ca227889-21f6-41aa-ab17-e733506029d0","401":"db55394d-7fc1-4da4-b57d-67248029efe9","404":"ccd3a54b-a177-40a5-ae34-54ef62a1a051","500":"8a51ee33-b382-4bd2-90a9-e55aceaa081c"},"security":["ee3c8b88-8ea0-43cb-aa56-107409710725"],"summary":"Update 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=\"PUT\"\nPATH_AND_QUERY=\"$API_PATH/gateway/rewards/YOUR_REWARD_ID\"\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\",\"description\":\"YOUR_DESCRIPTION\",\"xp_cost\":0,\"is_active\":false,\"metadata\":{},\"status\":\"initialized\",\"min_tier_id\":\"YOUR_MIN_TIER_ID\"}'\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 = 'PUT'\n// The signature covers the path and query as sent, starting at the API prefix.\nconst pathAndQuery = `${pathname}/gateway/rewards/YOUR_REWARD_ID`\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 \"description\": \"YOUR_DESCRIPTION\",\n \"xp_cost\": 0,\n \"is_active\": false,\n \"metadata\": {},\n \"status\": \"initialized\",\n \"min_tier_id\": \"YOUR_MIN_TIER_ID\"\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":"put","type":"path","servers":["171298bf-76a0-4c10-b6b3-6b42fa4e08ed"],"path":"/gateway/rewards/{rewardId}","baseUrlOptions":["https://api.kintra.io/api/v1"],"title":"Update 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=\"PUT\"\nPATH_AND_QUERY=\"$API_PATH/gateway/rewards/YOUR_REWARD_ID\"\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\",\"description\":\"YOUR_DESCRIPTION\",\"xp_cost\":0,\"is_active\":false,\"metadata\":{},\"status\":\"initialized\",\"min_tier_id\":\"YOUR_MIN_TIER_ID\"}'\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 = 'PUT'\n// The signature covers the path and query as sent, starting at the API prefix.\nconst pathAndQuery = `${pathname}/gateway/rewards/YOUR_REWARD_ID`\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 \"description\": \"YOUR_DESCRIPTION\",\n \"xp_cost\": 0,\n \"is_active\": false,\n \"metadata\": {},\n \"status\": \"initialized\",\n \"min_tier_id\": \"YOUR_MIN_TIER_ID\"\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.description":"\u003cstring>","body.is_active":true,"body.min_tier_id.oneOf.0":"\u003cstring>","body.title":"\u003cstring>","body.xp_cost":123}]},"dependencies":{"parameters":{"ad8b08d4-7fb0-41c6-a368-ca4f7f149267":{"in":"path","name":"rewardId","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"8b119235-e91e-4462-ba8a-d5e88c6e6b4b":{"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"}},"77849a15-6110-4a9d-b9ce-7540e568b468":{"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"}},"1b5d6bbb-5700-498a-a3be-4e3d41769efe":{"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":{"description":{"type":"string","uniqueKey":"description","typeLabel":"string"},"is_active":{"description":"Visibility/redeemability flag. This is the only reward field mutable after publish.","type":"boolean","uniqueKey":"is_active","typeLabel":"boolean"},"metadata":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"metadata.additionalProperties","typeLabel":"any"},"description":"Freeform reward metadata (full-replace of the jsonb on update). May carry a tenant-scoped\n`image_key`; any client-supplied `image_url` is rejected — the URL is derived on read.","properties":{},"type":"object","uniqueKey":"metadata","typeLabel":"object"},"min_tier_id":{"oneOf":[{"description":"Tier gate — UUID of the minimum tier, or `''`/`null` to clear (all tiers).","type":"string","uniqueKey":"min_tier_id.oneOf.0","typeLabel":"string"},{"description":"Tier gate — UUID of the minimum tier, or `''`/`null` to clear (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>"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"},"xp_cost":{"format":"double","type":"number","uniqueKey":"xp_cost","typeLabel":"number\u003cdouble>"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"description":"\u003cstring>","is_active":true,"metadata":{},"min_tier_id":"\u003cstring>","title":"\u003cstring>","xp_cost":123}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"ca227889-21f6-41aa-ab17-e733506029d0":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"data.success","typeLabel":"boolean"}},"required":["success"],"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":{"success":true},"errors":[{"message":"\u003cstring>","path":"\u003cstring>"}],"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"","exampleType":"generated"},"db55394d-7fc1-4da4-b57d-67248029efe9":{"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"},"ccd3a54b-a177-40a5-ae34-54ef62a1a051":{"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"},"8a51ee33-b382-4bd2-90a9-e55aceaa081c":{"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":{"ee3c8b88-8ea0-43cb-aa56-107409710725":{"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":"Update a reward - KINTRA","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-17T12:30:03.640Z","originalFileLocation":"api-reference/gateway/rewards/update-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=\"Updates a reward in place. Every field is optional: send title, description, xp_cost, is_active, metadata, min_tier_id or status, and leave out what you are not changing. This is the route that moves a reward from initialized to published, and the route that flips is_active. Publishing is a one-way move: once a reward is published, is_active is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 REWARD_PUBLISHED. The response data carries success. Returns 404 when no reward with that id belongs to your tenant. 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=\"Update a reward - KINTRA\">\u003cmeta data-mint-head property=\"og:description\" content=\"Updates a reward in place. Every field is optional: send title, description, xp_cost, is_active, metadata, min_tier_id or status, and leave out what you are not changing. This is the route that moves a reward from initialized to published, and the route that flips is_active. Publishing is a one-way move: once a reward is published, is_active is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 REWARD_PUBLISHED. The response data carries success. Returns 404 when no reward with that id belongs to your tenant. 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/update-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=Update+a+reward\u0026amp;description=Updates+a+reward+in+place.+Every+field+is+optional%3A+send+%60title%60%2C+%60description%60%2C+%60xp_cost%60%2C+%60is_active%60%2C+%60metadata%60%2C+%60min_tier_id%60+or+%60status%60%2C+and+leave+out+wh\u0026amp;theme=7168baa81e08787f570d323b\u0026amp;signature=78cdafe26a554610f063bd404fcdef01fdf55fad815932ff99ec5d33784a12b3\">\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=\"Update a reward - KINTRA\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Updates a reward in place. Every field is optional: send title, description, xp_cost, is_active, metadata, min_tier_id or status, and leave out what you are not changing. This is the route that moves a reward from initialized to published, and the route that flips is_active. Publishing is a one-way move: once a reward is published, is_active is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 REWARD_PUBLISHED. The response data carries success. Returns 404 when no reward with that id belongs to your tenant. 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=Update+a+reward\u0026amp;description=Updates+a+reward+in+place.+Every+field+is+optional%3A+send+%60title%60%2C+%60description%60%2C+%60xp_cost%60%2C+%60is_active%60%2C+%60metadata%60%2C+%60min_tier_id%60+or+%60status%60%2C+and+leave+out+wh\u0026amp;theme=7168baa81e08787f570d323b\u0026amp;signature=78cdafe26a554610f063bd404fcdef01fdf55fad815932ff99ec5d33784a12b3\">\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/update-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/update-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/update-a-reward#webpage\",\"url\":\"https://docs.kintra.io/api-reference/gateway/rewards/update-a-reward\",\"name\":\"Update a reward\",\"description\":\"Updates a reward in place. Every field is optional: send title, description, xp_cost, is_active, metadata, min_tier_id or status, and leave out what you are not changing. This is the route that moves a reward from initialized to published, and the route that flips is_active. Publishing is a one-way move: once a reward is published, is_active is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 REWARD_PUBLISHED. The response data carries success. Returns 404 when no reward with that id belongs to your tenant. 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.640Z\",\"isPartOf\":{\"@id\":\"https://docs.kintra.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/update-a-reward#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/update-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\":\"Update a reward\",\"item\":\"https://docs.kintra.io/api-reference/gateway/rewards/update-a-reward\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/update-a-reward#apireference\",\"headline\":\"Update a reward\",\"name\":\"Update a reward\",\"description\":\"Updates a reward in place. Every field is optional: send title, description, xp_cost, is_active, metadata, min_tier_id or status, and leave out what you are not changing. This is the route that moves a reward from initialized to published, and the route that flips is_active. Publishing is a one-way move: once a reward is published, is_active is the only field still mutable and it has to be the only field in the body, so an update that carries anything else returns 400 REWARD_PUBLISHED. The response data carries success. Returns 404 when no reward with that id belongs to your tenant. 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/update-a-reward\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kintra.io/api-reference/gateway/rewards/update-a-reward#webpage\"},\"dateModified\":\"2026-08-17T12:30:03.640Z\",\"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","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","description":"Deletes a reward. Only a reward that has not been published can be deleted: a published one returns 400, and the way to retire it instead is to set `is_active` to false with the update route. The response `data` carries `success`. Returns 404 when no reward with that id belongs to your tenant.","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":"Update 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"]}