Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.
The Stell API authenticates with API keys. You create and manage keys in the merchant portal. See API keys for creating, rotating, and revoking them.Keys start with sk_prod_ followed by a random string. The full secret is shown once, when you create the key.
An API key grants full read and write access to your company’s data,
including issuing and voiding passes on customers’ devices. Treat it like a
password. Call the API from your servers only, and never embed a key in a
website, mobile app, or anything else you ship to users.
Three habits keep keys manageable:
Use one key per integration. Revoking one then never breaks the others.
Store keys in your secrets manager, not in code or config files under version control.
If a key may have leaked, rotate it immediately. The old secret stops working at once.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Stell","description":"Guides and API reference for Stell: design, issue and update Apple Wallet and Google Wallet passes for loyalty, memberships, tickets and access.","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/stell/C_zhUrQoTUQsZ2Th/logo/light.svg?fit=max\u0026auto=format\u0026n=C_zhUrQoTUQsZ2Th\u0026q=85\u0026s=0331e63db80863763f108a9e957b9b1d","dark":"https://mintcdn.com/stell/C_zhUrQoTUQsZ2Th/logo/dark.svg?fit=max\u0026auto=format\u0026n=C_zhUrQoTUQsZ2Th\u0026q=85\u0026s=887c7ef4687b8beb0bfc6263349c508b"},"favicon":"https://mintcdn.com/stell/k_mnJ8Kr2DM3UI1t/favicon.svg?fit=max\u0026auto=format\u0026n=k_mnJ8Kr2DM3UI1t\u0026q=85\u0026s=c10d1de1b75b3b3a459cd9b2634f566f","api":{"playground":{"display":"simple"},"examples":{"languages":["typescript","bash","python"],"prefill":true},"url":"full"},"navbar":{"links":[{"href":"https://getstell.com/contact?context=docs:navbar","label":"Talk to Stell"},{"href":"mailto:hello@getstell.com","label":"Support"}],"primary":{"type":"button","label":"Open portal","href":"https://platform.getstell.com/portal"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/stell-tech-as","youtube":"https://www.youtube.com/@getstell","github":"https://github.com/Stell-Tech"},"links":[{"items":[{"label":"getstell.com","href":"https://getstell.com"},{"label":"Book a demo","href":"https://getstell.com/contact?context=docs:footer"},{"label":"Partners and integrations","href":"https://getstell.com/partners"},{"label":"Support","href":"mailto:hello@getstell.com"}]}]},"seo":{"metatags":{"canonical":"https://docs.getstell.com","og:site_name":"Stell Docs","twitter:card":"summary_large_image"},"organization":{"id":"https://getstell.com/#organization","name":"Stell","legalName":"Stell Tech AS","url":"https://getstell.com","logo":"https://getstell.com/brand/stell-wordmark-navy.svg","sameAs":["https://www.linkedin.com/company/stell-tech-as/","https://www.youtube.com/@getstell","https://github.com/Stell-Tech"]}},"contextual":{"options":["copy","view","claude","chatgpt","download-spec"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"stell","hasAudioNarration":false,"actualSubdomain":"stell","customDomains":["docs.getstell.com"],"gitSource":{"type":"github","owner":"stell-tech","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aea58a7dfbaebaa6b1d3912","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"API reference","count":64},{"language":"default","tag":"Merchant portal","count":20},{"language":"default","tag":"Passes","count":15},{"language":"default","tag":"Launch \u0026 grow","count":13},{"language":"default","tag":"Programs","count":8},{"language":"default","tag":"Pass Templates","count":7},{"language":"default","tag":"Engage","count":6},{"language":"default","tag":"Pass templates","count":6},{"language":"default","tag":"Engagement","count":6},{"language":"default","tag":"Integration guide","count":5}]},"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":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".frame{margin-top:1.75rem;margin-bottom:1.75rem}.task-list-item::before{content:none}.task-list-item{position:relative;margin-left:10px}.task-list-item>input[type=\"checkbox\"]{position:absolute;left:-2px;top:7px;margin:0}"}],"page":{"pagePath":"api-reference/authentication","slug":"/api-reference/authentication","pageMetadata":{"title":"Authenticate with the Stell API","sidebarTitle":"Authentication","description":"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.","href":"/api-reference/authentication"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The Stell API authenticates with `,_jsx(_components.strong,{children:`API keys`}),`. You create and manage keys in the merchant portal. See `,_jsx(_components.a,{href:`/api-reference/api-keys`,children:`API keys`}),` for creating, rotating, and revoking them.`]}),`\n`,_jsxs(_components.p,{children:[`Keys start with `,_jsx(_components.code,{children:`sk_prod_`}),` followed by a random string. The full secret is shown once, when you create the key.`]}),`\n`,_jsx(Heading,{level:`2`,id:`sending-your-key`,children:`Sending your key`}),`\n`,_jsxs(_components.p,{children:[`Pass the key as a Bearer token in the `,_jsx(_components.code,{children:`Authorization`}),` header on every request:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.platform.getstell.com/v1/programs`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer sk_prod_your_key_here\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`A missing or invalid key returns `,_jsx(_components.code,{children:`401 Unauthorized`}),`. A valid key requesting a resource that belongs to another company returns `,_jsx(_components.code,{children:`403 Forbidden`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`keep-keys-server-side`,children:`Keep keys server-side`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`An API key grants `,_jsx(_components.strong,{children:`full read and write access`}),` to your company’s data,\nincluding issuing and voiding passes on customers’ devices. Treat it like a\npassword. Call the API from your servers only, and never embed a key in a\nwebsite, mobile app, or anything else you ship to users.`]})}),`\n`,_jsx(_components.p,{children:`Three habits keep keys manageable:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Use one key per integration. Revoking one then never breaks the others.`}),`\n`,_jsx(_components.li,{children:`Store keys in your secrets manager, not in code or config files under version control.`}),`\n`,_jsxs(_components.li,{children:[`If a key may have leaked, `,_jsx(_components.a,{href:`/api-reference/api-keys#manage-keys`,children:`rotate it`}),` immediately. The old secret stops working at once.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Authenticate with the Stell API","sidebarTitle":"Authentication","description":"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.","href":"/api-reference/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Sending your key","slug":"sending-your-key","depth":2,"children":[]},{"title":"Keep keys server-side","slug":"keep-keys-server-side","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"stell","siteName":"Stell","title":"Authenticate with the Stell API - Stell","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-11T16:15:17.355Z","originalFileLocation":"api-reference/authentication.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Stell\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/stell/J93C2Sxezv9CfvWS/_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/stell/J93C2Sxezv9CfvWS/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/stell/J93C2Sxezv9CfvWS/_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/stell/J93C2Sxezv9CfvWS/_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/stell/J93C2Sxezv9CfvWS/_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/stell/J93C2Sxezv9CfvWS/_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/stell/J93C2Sxezv9CfvWS/_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/stell/J93C2Sxezv9CfvWS/_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/stell/J93C2Sxezv9CfvWS/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authenticate with the Stell API - Stell\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Stell Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.getstell.com/api-reference/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://stell.mintlify.site/_mintlify/api/og/v2?division=Essentials\u0026amp;title=Authenticate+with+the+Stell+API\u0026amp;description=Send+your+Stell+API+key+as+a+Bearer+token%3A+the+key+format%2C+what+a+missing+or+invalid+key+returns%2C+and+why+keys+stay+server-side.\u0026amp;theme=d920f5eee51ec1647d160b3e\u0026amp;signature=afb3647eb458fde236a4e88878e74a46c46c491765e43d88fdad0c243e09782f\">\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=\"Authenticate with the Stell API - Stell\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://stell.mintlify.site/_mintlify/api/og/v2?division=Essentials\u0026amp;title=Authenticate+with+the+Stell+API\u0026amp;description=Send+your+Stell+API+key+as+a+Bearer+token%3A+the+key+format%2C+what+a+missing+or+invalid+key+returns%2C+and+why+keys+stay+server-side.\u0026amp;theme=d920f5eee51ec1647d160b3e\u0026amp;signature=afb3647eb458fde236a4e88878e74a46c46c491765e43d88fdad0c243e09782f\">\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/stell/J93C2Sxezv9CfvWS/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Stell\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.getstell.com/api-reference/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://getstell.com/#organization\",\"name\":\"Stell\",\"legalName\":\"Stell Tech AS\",\"url\":\"https://getstell.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://getstell.com/brand/stell-wordmark-navy.svg\"},\"sameAs\":[\"https://www.linkedin.com/company/stell-tech-as/\",\"https://www.youtube.com/@getstell\",\"https://github.com/Stell-Tech\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.getstell.com#website\",\"name\":\"Stell\",\"url\":\"https://docs.getstell.com\",\"publisher\":{\"@id\":\"https://getstell.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.getstell.com/api-reference/authentication#webpage\",\"url\":\"https://docs.getstell.com/api-reference/authentication\",\"name\":\"Authenticate with the Stell API\",\"description\":\"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.\",\"dateModified\":\"2026-10-11T16:15:17.355Z\",\"isPartOf\":{\"@id\":\"https://docs.getstell.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.getstell.com/api-reference/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.getstell.com/api-reference/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Essentials\",\"item\":\"https://docs.getstell.com/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authenticate with the Stell API\",\"item\":\"https://docs.getstell.com/api-reference/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.getstell.com/api-reference/authentication#article\",\"headline\":\"Authenticate with the Stell API\",\"name\":\"Authenticate with the Stell API\",\"description\":\"Send your Stell API key as a Bearer token: the key format, what a missing or invalid key returns, and why keys stay server-side.\",\"url\":\"https://docs.getstell.com/api-reference/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.getstell.com/api-reference/authentication#webpage\"},\"dateModified\":\"2026-10-11T16:15:17.355Z\",\"publisher\":{\"@id\":\"https://getstell.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.getstell.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Stell\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Stell\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/authentication.md","siteName":"Stell","nav":{"global":null,"tabs":[{"tab":"Getting started","pages":[{"title":"Getting started","href":""}]},{"tab":"Merchant portal","pages":[{"title":"Merchant portal","href":"/programs/overview"}]},{"tab":"Launch \u0026 grow","pages":[{"title":"Launch \u0026 grow","href":"/launch-and-grow/overview"}]},{"tab":"API reference","groups":[{"group":"Essentials","pages":[{"title":"Stell API: issue Apple Wallet and Google Wallet passes","sidebarTitle":"Introduction","href":"/api-reference/introduction"},{"title":"Create and rotate Stell API keys","sidebarTitle":"API keys","description":"Create, rotate and revoke API keys in the Stell merchant portal, and keep one key per integration.","href":"/api-reference/api-keys"},{"title":"Authenticate with the Stell API","sidebarTitle":"Authentication","href":"/api-reference/authentication"},{"title":"Stell API errors and status codes","sidebarTitle":"Errors","description":"How the Stell API reports errors: the JSON error shape, status codes and error codes, and which errors are safe to retry.","href":"/api-reference/errors"}]},{"group":"Integration guide","pages":[{"title":"Wallet pass API integration guide","sidebarTitle":"Integration overview","href":"/api-reference/integration/overview"},{"title":"Add to Apple Wallet and Google Wallet from your own site or app","sidebarTitle":"Add to Wallet","href":"/api-reference/integration/add-to-wallet"},{"title":"Update a wallet pass from your backend","sidebarTitle":"Updating a pass","href":"/api-reference/integration/updating-passes"},{"title":"Identify wallet pass holders at the POS: scan or NFC tap","sidebarTitle":"In-store: scan or tap","href":"/api-reference/integration/in-store"},{"title":"Wallet pass webhooks, lifecycle and go-live checklist","sidebarTitle":"Webhooks and go-live","href":"/api-reference/integration/go-live"}]},{"group":"Webhooks","pages":[{"title":"Event webhooks for wallet pass events","sidebarTitle":"Event webhooks","href":"/api-reference/webhooks/overview"},{"title":"Webhook deliveries: payloads, retries and signature verification","sidebarTitle":"Webhook deliveries","href":"/api-reference/webhooks/deliveries"}]},{"group":"Passes","pages":[{"title":"Get pass transactions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/passes/{passId}/transactions","href":"/api-reference/passes/get-pass-transactions"},{"title":"Get pass details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/passes/{passId}","href":"/api-reference/passes/get-pass-details"},{"title":"Void pass","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/passes/{passId}","href":"/api-reference/passes/void-pass"},{"title":"Update pass","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/passes/{passId}","href":"/api-reference/passes/update-pass"},{"title":"Generate Google Wallet save link","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /v1/passes/{passId}/links/google","href":"/api-reference/passes/generate-google-wallet-save-link"},{"title":"Create pass image upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/passes/image-uploads","href":"/api-reference/passes/create-pass-image-upload"},{"title":"List passes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/passes","href":"/api-reference/passes/list-passes"},{"title":"Create new pass","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/passes","href":"/api-reference/passes/create-new-pass"},{"title":"Generate Apple Wallet installation link","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /v1/passes/{passId}/links/apple","href":"/api-reference/passes/generate-apple-wallet-installation-link"},{"title":"Create secure Apple Wallet pass","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/apple/passes/secure","href":"/api-reference/passes/create-secure-apple-wallet-pass"},{"title":"Get pass registrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/passes/{passId}/registrations","href":"/api-reference/passes/get-pass-registrations"},{"title":"Batch create passes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/passes/batch","href":"/api-reference/passes/batch-create-passes"}]},{"group":"Pass Templates","pages":[{"title":"List all pass templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/templates","href":"/api-reference/pass-templates/list-all-pass-templates"},{"title":"Get program pass template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/programs/{programId}/templates/{templateId}","href":"/api-reference/pass-templates/get-program-pass-template"},{"title":"Delete program pass template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/programs/{programId}/templates/{templateId}","href":"/api-reference/pass-templates/delete-program-pass-template"},{"title":"Update program pass template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/programs/{programId}/templates/{templateId}","href":"/api-reference/pass-templates/update-program-pass-template"},{"title":"Get pass template details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/templates/{templateId}","href":"/api-reference/pass-templates/get-pass-template-details"},{"title":"List program pass templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/programs/{programId}/templates","href":"/api-reference/pass-templates/list-program-pass-templates"},{"title":"Create program pass template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/programs/{programId}/templates","href":"/api-reference/pass-templates/create-program-pass-template"}]},{"group":"Engagement","pages":[{"title":"Get pass geofences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/passes/{passId}/geofences","href":"/api-reference/engagement/get-pass-geofences"},{"title":"Replace all pass geofences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/passes/{passId}/geofences","href":"/api-reference/engagement/replace-all-pass-geofences"},{"title":"Add pass geofence","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/passes/{passId}/geofences","href":"/api-reference/engagement/add-pass-geofence"},{"title":"Delete all pass geofences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/passes/{passId}/geofences","href":"/api-reference/engagement/delete-all-pass-geofences"},{"title":"Delete pass geofence by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/passes/{passId}/geofences/{geofenceId}","href":"/api-reference/engagement/delete-pass-geofence-by-id"},{"title":"Update pass geofence by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/passes/{passId}/geofences/{geofenceId}","href":"/api-reference/engagement/update-pass-geofence-by-id"}]},{"group":"Programs","pages":[{"title":"Get encryption key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/programs/{programId}/encryption-key","href":"/api-reference/programs/get-encryption-key"},{"title":"List programs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/programs","href":"/api-reference/programs/list-programs"},{"title":"Create new program","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/programs","href":"/api-reference/programs/create-new-program"},{"title":"Get program details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/programs/{programId}","href":"/api-reference/programs/get-program-details"},{"title":"Delete program","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/programs/{programId}","href":"/api-reference/programs/delete-program"},{"title":"Update program","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/programs/{programId}","href":"/api-reference/programs/update-program"}]},{"group":"Companies","pages":[{"title":"List companies","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/companies","href":"/api-reference/companies/list-companies"},{"title":"Get company details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/companies/{companyId}","href":"/api-reference/companies/get-company-details"}]},{"group":"Stores","pages":[{"title":"List stores","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/stores","href":"/api-reference/stores/list-stores"},{"title":"Create store","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/stores","href":"/api-reference/stores/create-store"},{"title":"Get store details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/stores/{storeId}","href":"/api-reference/stores/get-store-details"},{"title":"Delete store","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/stores/{storeId}","href":"/api-reference/stores/delete-store"},{"title":"Update store","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/stores/{storeId}","href":"/api-reference/stores/update-store"}]},{"group":"Merchants","pages":[{"title":"List merchants","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/merchants","href":"/api-reference/merchants/list-merchants"},{"title":"Create merchant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/merchants","href":"/api-reference/merchants/create-merchant"},{"title":"Get merchant details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/merchants/{merchantId}","href":"/api-reference/merchants/get-merchant-details"},{"title":"Delete merchant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/merchants/{merchantId}","href":"/api-reference/merchants/delete-merchant"},{"title":"Update merchant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/merchants/{merchantId}","href":"/api-reference/merchants/update-merchant"}]},{"group":"Terminals","pages":[{"title":"Get terminal details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/terminals/{terminalId}","href":"/api-reference/terminals/get-terminal-details"},{"title":"Delete terminal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/terminals/{terminalId}","href":"/api-reference/terminals/delete-terminal"},{"title":"Update terminal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/terminals/{terminalId}","href":"/api-reference/terminals/update-terminal"},{"title":"List terminals","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/terminals","href":"/api-reference/terminals/list-terminals"},{"title":"Create terminal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/terminals","href":"/api-reference/terminals/create-terminal"}]},{"group":"System","pages":[{"title":"JSON Web Key Set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /.well-known/jwks.json","href":"/api-reference/system/json-web-key-set"},{"title":"Health check","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/health","href":"/api-reference/system/health-check"}]},{"group":"Transactions","pages":[{"title":"Get transaction details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/transactions/{transactionId}","href":"/api-reference/transactions/get-transaction-details"},{"title":"List transactions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/transactions","href":"/api-reference/transactions/list-transactions"},{"title":"Create transaction","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/transactions","href":"/api-reference/transactions/create-transaction"}]}]}]},"basePath":"","title":"Authenticate with the Stell API - Stell","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":[],"chunks":[]}