The System Credentials sheet tracks system credentials in circulation, including API tokens and credentials for service accounts and infrastructure, with these fields: Service, Owner, Creation Date, Expiration Date, Access Scope, Purpose, Environment, Investigate, and Original Request.Each entry identifies a named human owner and links to the approved Linear request in Original Request. Use Purpose to identify the component or system that needs the credential.
To request a system credential, submit the request form in Linear. Specify the vendor, required permissions or scope, and purpose.The request is assigned to the respective vendor owner for review and approval. Do not create the credential before the vendor owner approves the request. The owner adds the new credential to the System Credentials sheet before granting access.
When a component is removed from the system or access is no longer required, immediately revoke any credentials that are no longer needed. Update the inventory to reflect the revocation.
Every quarter, the engineering leadership team reviews the inventory. For each vendor, go through the existing system credentials and reconcile them with those listed in the System Credentials sheet. Update the inventory and immediately revoke unused or stale credentials.A recurring issue in Linear reminds the people responsible to perform this review.
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Polar Handbook","colors":{"primary":"#000","light":"#fff","dark":"#000"},"logo":{"light":"https://mintcdn.com/polar-handbook/lJCpMX18DJeucCdV/images/light.png?fit=max\u0026auto=format\u0026n=lJCpMX18DJeucCdV\u0026q=85\u0026s=d57d5ae90ddaff62cce287ad100a8532","dark":"https://mintcdn.com/polar-handbook/lJCpMX18DJeucCdV/images/dark.png?fit=max\u0026auto=format\u0026n=lJCpMX18DJeucCdV\u0026q=85\u0026s=38f67240972a3848c6179a162c8f3e2c"},"favicon":"https://mintcdn.com/polar-handbook/lJCpMX18DJeucCdV/images/favicon.png?fit=max\u0026auto=format\u0026n=lJCpMX18DJeucCdV\u0026q=85\u0026s=3f3b1886ae03a807ac478dc0f59c171b","appearance":{"default":"system"},"background":{"color":{"dark":"#131316"}},"contextual":{"options":["copy","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"polar-handbook","hasAudioNarration":false,"actualSubdomain":"polar-handbook","customDomains":["handbook.polar.sh"],"gitSource":{"type":"github","owner":"polarsource","repo":"polar","deployBranch":"main","contentDirectory":"handbook","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aedb80aa97e78d5bc08a768","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Engineering","count":66},{"language":"default","tag":"Design Documents","count":20},{"language":"default","tag":"Architecture Decisions","count":16},{"language":"default","tag":"On-Call Procedures","count":10},{"language":"default","tag":"Backend Development","count":8},{"language":"default","tag":"Design","count":5},{"language":"default","tag":"Working at Polar","count":5},{"language":"default","tag":"Database","count":4},{"language":"default","tag":"Guides","count":3},{"language":"default","tag":"Company","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"engineering/api-tokens-and-system-credentials","slug":"/engineering/api-tokens-and-system-credentials","pageMetadata":{"title":"API Tokens and System Credentials","description":"How we request, track, review, and revoke credentials used by Polar's systems.","href":"/engineering/api-tokens-and-system-credentials"},"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: \"How we request, track, review, and revoke credentials used by Polar’s systems.\"\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`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`inventory`,children:`Inventory`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`https://docs.google.com/spreadsheets/d/15RCxSWdOV-Wi7vXVNP-9n67A0IJUJIp1I2aFJsryPik/edit?usp=sharing`,children:`System Credentials sheet`}),` tracks system credentials in circulation, including API tokens and credentials for service accounts and infrastructure, with these fields: `,_jsx(_components.strong,{children:`Service`}),`, `,_jsx(_components.strong,{children:`Owner`}),`, `,_jsx(_components.strong,{children:`Creation Date`}),`, `,_jsx(_components.strong,{children:`Expiration Date`}),`, `,_jsx(_components.strong,{children:`Access Scope`}),`, `,_jsx(_components.strong,{children:`Purpose`}),`, `,_jsx(_components.strong,{children:`Environment`}),`, `,_jsx(_components.strong,{children:`Investigate`}),`, and `,_jsx(_components.strong,{children:`Original Request`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Each entry identifies a named human owner and links to the approved Linear request in `,_jsx(_components.strong,{children:`Original Request`}),`. Use `,_jsx(_components.strong,{children:`Purpose`}),` to identify the component or system that needs the credential.`]}),`\n`,_jsx(Heading,{level:`2`,id:`request`,children:`Request`}),`\n`,_jsxs(_components.p,{children:[`To request a system credential, submit the `,_jsx(_components.a,{href:`https://linear.app/polarsh/team/PLR/new?template=aad8b13a-6c51-4684-aad7-be4649f7409a`,children:`request form`}),` in Linear. Specify the vendor, required permissions or scope, and purpose.`]}),`\n`,_jsxs(_components.p,{children:[`The request is assigned to the respective vendor owner for review and approval. `,_jsx(_components.strong,{children:`Do not create the credential before the vendor owner approves the request.`}),` The owner adds the new credential to the System Credentials sheet before granting access.`]}),`\n`,_jsx(Heading,{level:`2`,id:`revoke`,children:`Revoke`}),`\n`,_jsxs(_components.p,{children:[`When a component is removed from the system or access is no longer required, `,_jsx(_components.strong,{children:`immediately revoke`}),` any credentials that are no longer needed. Update the inventory to reflect the revocation.`]}),`\n`,_jsx(Heading,{level:`2`,id:`quarterly-review`,children:`Quarterly review`}),`\n`,_jsx(_components.p,{children:`Every quarter, the engineering leadership team reviews the inventory. For each vendor, go through the existing system credentials and reconcile them with those listed in the System Credentials sheet. Update the inventory and immediately revoke unused or stale credentials.`}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.a,{href:`https://linear.app/polarsh/issue/PLR-192`,children:`recurring issue in Linear`}),` reminds the people responsible to perform this review.`]})]})}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":"API Tokens and System Credentials","description":"How we request, track, review, and revoke credentials used by Polar's systems.","href":"/engineering/api-tokens-and-system-credentials"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Inventory","slug":"inventory","depth":2,"children":[]},{"title":"Request","slug":"request","depth":2,"children":[]},{"title":"Revoke","slug":"revoke","depth":2,"children":[]},{"title":"Quarterly review","slug":"quarterly-review","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"polar-handbook","siteName":"Polar Handbook","title":"API Tokens and System Credentials - Polar Handbook","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-24T13:42:54.183Z","originalFileLocation":"engineering/api-tokens-and-system-credentials.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=\"How we request, track, review, and revoke credentials used by Polar\u0026#x27;s systems.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Polar Handbook\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/polar-handbook/gUYbsHdeOTU04sqy/_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/polar-handbook/gUYbsHdeOTU04sqy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/polar-handbook/gUYbsHdeOTU04sqy/_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/polar-handbook/gUYbsHdeOTU04sqy/_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/polar-handbook/gUYbsHdeOTU04sqy/_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/polar-handbook/gUYbsHdeOTU04sqy/_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/polar-handbook/gUYbsHdeOTU04sqy/_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/polar-handbook/gUYbsHdeOTU04sqy/_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/polar-handbook/gUYbsHdeOTU04sqy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"API Tokens and System Credentials - Polar Handbook\">\u003cmeta data-mint-head property=\"og:description\" content=\"How we request, track, review, and revoke credentials used by Polar\u0026#x27;s systems.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Polar Handbook\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://polar-handbook.mintlify.site/_mintlify/api/og/v2?division=Engineering\u0026amp;title=API+Tokens+and+System+Credentials\u0026amp;description=How+we+request%2C+track%2C+review%2C+and+revoke+credentials+used+by+Polar%27s+systems.\u0026amp;theme=6fad0777c87be054b9ac2477\u0026amp;signature=80f021ee8abab985020e19d00ee6a0e9641c8bfe44f2ca3f58838a8dab344058\">\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=\"API Tokens and System Credentials - Polar Handbook\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How we request, track, review, and revoke credentials used by Polar\u0026#x27;s systems.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://polar-handbook.mintlify.site/_mintlify/api/og/v2?division=Engineering\u0026amp;title=API+Tokens+and+System+Credentials\u0026amp;description=How+we+request%2C+track%2C+review%2C+and+revoke+credentials+used+by+Polar%27s+systems.\u0026amp;theme=6fad0777c87be054b9ac2477\u0026amp;signature=80f021ee8abab985020e19d00ee6a0e9641c8bfe44f2ca3f58838a8dab344058\">\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/polar-handbook/gUYbsHdeOTU04sqy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Polar Handbook\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/engineering/api-tokens-and-system-credentials.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://handbook.polar.sh/#organization\",\"name\":\"Polar Handbook\",\"url\":\"https://handbook.polar.sh\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/polar-handbook/lJCpMX18DJeucCdV/images/light.png?fit=max\u0026auto=format\u0026n=lJCpMX18DJeucCdV\u0026q=85\u0026s=d57d5ae90ddaff62cce287ad100a8532\"}},{\"@type\":\"WebSite\",\"@id\":\"https://handbook.polar.sh#website\",\"name\":\"Polar Handbook\",\"url\":\"https://handbook.polar.sh\",\"publisher\":{\"@id\":\"https://handbook.polar.sh/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials#webpage\",\"url\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials\",\"name\":\"API Tokens and System Credentials\",\"description\":\"How we request, track, review, and revoke credentials used by Polar's systems.\",\"dateModified\":\"2026-09-24T13:42:54.183Z\",\"isPartOf\":{\"@id\":\"https://handbook.polar.sh#website\"},\"breadcrumb\":{\"@id\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Engineering\",\"item\":\"https://handbook.polar.sh/engineering/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API Tokens and System Credentials\",\"item\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials#article\",\"headline\":\"API Tokens and System Credentials\",\"name\":\"API Tokens and System Credentials\",\"description\":\"How we request, track, review, and revoke credentials used by Polar's systems.\",\"url\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials\",\"mainEntityOfPage\":{\"@id\":\"https://handbook.polar.sh/engineering/api-tokens-and-system-credentials#webpage\"},\"dateModified\":\"2026-09-24T13:42:54.183Z\",\"publisher\":{\"@id\":\"https://handbook.polar.sh/#organization\"},\"isPartOf\":{\"@id\":\"https://handbook.polar.sh#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Polar Handbook\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Polar Handbook","nav":{"global":null,"groups":[{"group":"Company","pages":[{"title":"About Polar","href":"/company/about-polar"}]},{"group":"Working at Polar","pages":[{"title":"Working at Polar","href":"/working-at-polar/introduction"},{"title":"Onboarding","href":"/working-at-polar/onboarding"},{"title":"How we work","href":"/working-at-polar/how-we-work"},{"title":"Project Management Workflow","href":"/working-at-polar/project-management-workflow"},{"title":"Recruitment Process","href":"/working-at-polar/recruitment-process"}]},{"group":"Design","pages":[{"title":"Design at Polar","href":"/design/introduction"},{"title":"Design Principles","href":"/design/principles"},{"title":"Product Design","href":"/design/product-design"},{"title":"Visual Design","href":"/design/visual-design"},{"title":"Voice \u0026 Tone","href":"/design/voice-and-tone"}]},{"group":"Engineering","pages":[{"title":"Engineering at Polar","href":"/engineering/introduction"},{"title":"Architecture Overview","description":"The services that make up Polar, where they run and how they connect.","href":"/engineering/architecture-overview"},{"title":"API Tokens and System Credentials","href":"/engineering/api-tokens-and-system-credentials"},{"group":"Guides","pages":[{"title":"Guides","description":"Step-by-step guides for common engineering tasks at Polar","href":"/engineering/guides"},{"title":"Releasing @polar-sh/checkout","href":"/engineering/guides/release-checkout"},{"title":"Polar Cycle","href":"/engineering/guides/cycle-admin"}]},{"group":"Backend Development","pages":[{"title":"Authorization","href":"/engineering/backend-development/authorization"},{"title":"REST API Guidelines","href":"/engineering/backend-development/rest-api-guidelines"},{"title":"API Versioning","href":"/engineering/backend-development/api-versioning"},{"title":"Task Debouncer","href":"/engineering/backend-development/task-debouncer"},{"title":"Operational Errors","href":"/engineering/backend-development/operational-errors"},{"title":"Metadata","href":"/engineering/backend-development/metadata"},{"title":"Tinybird","href":"/engineering/backend-development/tinybird"},{"title":"Account \u0026 Payout Account","href":"/engineering/backend-development/account-payout-account"}]},{"group":"Design Documents","pages":[{"title":"Design documents","href":"/engineering/design-documents/index"},{"title":"\u003cshort feature title>","href":"/engineering/design-documents/template"},{"title":null,"href":"/engineering/design-documents/seat-based-pricing"},{"title":null,"href":"/engineering/design-documents/prorations"},{"title":null,"href":"/engineering/design-documents/subscription-retries"},{"title":null,"href":"/engineering/design-documents/wallets"},{"title":null,"href":"/engineering/design-documents/multi-currency"},{"title":null,"href":"/engineering/design-documents/business-entity"},{"title":null,"href":"/engineering/design-documents/event-storage"},{"title":"Platform API","href":"/engineering/design-documents/platform-api"},{"title":null,"href":"/engineering/design-documents/rbac"},{"title":null,"href":"/engineering/design-documents/polar-for-polar"},{"title":"API Versioning","href":"/engineering/design-documents/api-versioning"},{"title":null,"href":"/engineering/design-documents/payout-reviews"},{"title":null,"href":"/engineering/design-documents/secrets-encryption"},{"title":null,"href":"/engineering/design-documents/merchant-migrations"},{"title":"Tasks on Lambda","href":"/engineering/design-documents/tasks-on-lambda"},{"title":"Switching to Resend Forge","href":"/engineering/design-documents/resend-forge"},{"title":"Versioning","href":"/engineering/design-documents/versioning"},{"title":"Outpost","href":"/engineering/design-documents/outpost"}]},{"group":"Architecture Decisions","pages":[{"title":"Architecture Decision Records","href":"/engineering/decisions/index"},{"title":"ADR-NNNN: \u003cshort decision title>","href":"/engineering/decisions/template"},{"title":"ADR-0001: Record architecture decisions","href":"/engineering/decisions/0001-record-architecture-decisions"},{"title":"ADR-0002: Business errors are status-coded PolarError subclasses","href":"/engineering/decisions/0002-status-coded-polar-errors"},{"title":"ADR-0003: One request or task is one transaction","href":"/engineering/decisions/0003-request-scoped-unit-of-work"},{"title":"ADR-0004: Frontend UI is authored with Orbit Box and design tokens","href":"/engineering/decisions/0004-orbit-box-design-system"},{"title":"ADR-0005: Authorization is AuthSubject plus scopes, with per-module authenticators","href":"/engineering/decisions/0005-auth-subject-and-scopes"},{"title":"ADR-0006: Migrations and backfills are deploy-safe by construction","href":"/engineering/decisions/0006-migration-and-backfill-safety"},{"title":"ADR-0007: No default in output schemas","href":"/engineering/decisions/0007-no-default-in-output-schemas"},{"title":"ADR-0008: Encrypt secrets at rest","href":"/engineering/decisions/0008-encrypt-secrets-at-rest"},{"title":"ADR-0009: Use bare boolean expressions in SQLAlchemy predicates","href":"/engineering/decisions/0009-use-bare-boolean-expressions-in-sqlalchemy-predicates"},{"title":"ADR-0010: JWKS signing keys live in KMS and rotate by kid","href":"/engineering/decisions/0010-jwks-signing-keys-in-kms"},{"title":"ADR-0011: Specialized webhook events also emit the catch-all updated","href":"/engineering/decisions/0011-specialized-webhooks-also-emit-updated"},{"title":"ADR-0012: Minimize data in AI API calls","href":"/engineering/decisions/0012-minimize-data-in-ai-api-calls"},{"title":"ADR-0013: Minimize personal data in telemetry","href":"/engineering/decisions/0013-minimize-personal-data-in-telemetry"},{"title":"ADR-0014: AI agents are their own auth subject until a human claims them","href":"/engineering/decisions/0014-agent-auth-subject"}]},{"title":"Data Flows","href":"/engineering/data-flows"},{"title":"Tech Notes","href":"/engineering/tech-notes"},{"group":"Database","pages":[{"title":"Connecting to the Database","href":"/engineering/oncall/connecting-to-prod-db"},{"title":"Rotate Database Credentials","href":"/engineering/oncall/rotate-db-credentials"},{"title":"Kill Blocking DB Queries","href":"/engineering/oncall/kill-blocking-queries"},{"title":"Ad-hoc indices","href":"/engineering/database/ad-hoc-indices"}]},{"group":"On-Call Procedures","pages":[{"title":"On-Call Procedures","href":"/engineering/oncall/introduction"},{"title":null,"href":"/engineering/oncall/developer-faq"},{"title":"Merge Accounts","href":"/engineering/oncall/merge-accounts"},{"title":"Deploy Infrastructure Changes","href":"/engineering/oncall/deploy-infra"},{"title":"Trigger Webhooks","href":"/engineering/oncall/trigger-webhooks"},{"title":"Run One-Off Jobs","href":"/engineering/oncall/run-one-off-jobs"},{"title":"Rotate the JWKS Signing Key","href":"/engineering/oncall/rotate-jwks"},{"title":"Rotate the Token Hashing Secret","href":"/engineering/oncall/rotate-secret"},{"title":"Respond to a KMS Key Compromise","href":"/engineering/oncall/respond-to-a-kms-compromise"},{"title":"Vendor Security Monitoring","href":"/engineering/oncall/vendor-security-monitoring"}]}]}]},"basePath":"","title":"API Tokens and System Credentials - Polar Handbook","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":[],"chunks":[]}