The access token lifetime is configured to 15 minutes.
A 15-minute access token should not be a bottleneck for M2M clients if your
backend caches the token and renews it close to expiry. The usual anti-pattern
is requesting a new token for every API call.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"TrueParser","description":"Unified orchestration for independently versioned parsing engines across spatial, CAD, SQL, email, PDF, and Office formats. Transform diverse documents into structured, queryable data.","colors":{"primary":"#0047AB","light":"#0058BC","dark":"#0047AB"},"logo":{"light":"https://mintcdn.com/trueparser/b7cscsNScG18of8Y/logo/dark.png?fit=max\u0026auto=format\u0026n=b7cscsNScG18of8Y\u0026q=85\u0026s=10e309e3a6925f82bfeb4495b3b5ebd9","dark":"https://mintcdn.com/trueparser/b7cscsNScG18of8Y/logo/light.png?fit=max\u0026auto=format\u0026n=b7cscsNScG18of8Y\u0026q=85\u0026s=7b3db3077d41dfad4e50fa3b56e4c17c"},"favicon":{"light":"https://mintcdn.com/trueparser/jgJJEzE2DhG8rv9W/favicon/favicon-light.png?fit=max\u0026auto=format\u0026n=jgJJEzE2DhG8rv9W\u0026q=85\u0026s=234684e04d78d3a2c55f407f26dfef55","dark":"https://mintcdn.com/trueparser/jgJJEzE2DhG8rv9W/favicon/favicon-dark.png?fit=max\u0026auto=format\u0026n=jgJJEzE2DhG8rv9W\u0026q=85\u0026s=38ac41ff45d8d2adb19563b51fc7b3fc"},"appearance":{"default":"dark"},"background":{"decoration":"windows"},"navbar":{"links":[{"href":"mailto:support@trueparser.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.trueparser.com"}},"footer":{"socials":{"x":"https://x.com/trueparser","github":"https://github.com/trueparser"}},"seo":{"metatags":{"canonical":"https://docs.trueparser.com"},"indexing":"navigable"},"icons":{"library":"fontawesome"},"styling":{"eyebrows":"breadcrumbs","latex":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"interaction":{"drilldown":true},"metadata":{"timestamp":true},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://trueparser.com/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"trueparser","hasAudioNarration":false,"actualSubdomain":"trueparser","customDomains":["docs.trueparser.com"],"gitSource":{"type":"github","owner":"trueparser","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21dc59ab250d2c48818a11","collectionId":"a5f03072-6978-4b6d-8eba-87880d274ae3","schemaVersion":"v2"},"entitlements":{},"buildId":"6a21dc59ab250d2c48818a11:success","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Guides","count":20},{"language":"default","tag":"Output Contracts","count":9},{"language":"default","tag":"Dashboard","count":8},{"language":"default","tag":"Families","count":8},{"language":"default","tag":"Internals","count":5},{"language":"default","tag":"Parsing Engine","count":5},{"language":"default","tag":"Getting started","count":2},{"language":"default","tag":"API Reference","count":1},{"language":"default","tag":"Endpoints","count":1},{"language":"default","tag":"Overview","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"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":"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}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"::selection{background-color:#8bd0ff;color:#0058bc}::-moz-selection{background-color:#8bd0ff;color:#0058bc}"}],"page":{"pagePath":"dashboard/authentication","slug":"/dashboard/authentication","pageMetadata":{"title":"Authentication","description":"How dashboard users and tenant apps authenticate against the current backend.","href":"/dashboard/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: \"How dashboard users and tenant apps authenticate against the current backend.\"\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`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`TrueParser separates human dashboard access from machine access used by tenant apps and the Demo UI.`}),`\n`,_jsx(Heading,{level:`2`,id:`authentication-model`,children:`Authentication Model`}),`\n`,_jsx(_components.p,{children:`There are two main authentication paths:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`dashboard sign-in for tenant users`}),`\n`,_jsx(_components.li,{children:`machine-to-machine token issuance for tenant apps`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`1-dashboard-sign-in`,children:`1. Dashboard Sign-In`}),`\n`,_jsx(_components.p,{children:`The dashboard is used to manage tenants, apps, plans, storage, and billing.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`URL`}),`: `,_jsx(_components.code,{children:`https://dashboard.trueparser.com`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Users`}),`: tenant users`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Current host setup`}),`: Google authentication is configured in the host`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This is the management side of the control plane.`}),`\n`,_jsx(Heading,{level:`2`,id:`2-machine-access-for-tenant-apps`,children:`2. Machine Access For Tenant Apps`}),`\n`,_jsx(_components.p,{children:`Backend services and the Demo UI authenticate by exchanging app credentials for an access token.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Token endpoint`}),`: `,_jsx(_components.code,{children:`https://admin-api.trueparser.com/connect/token`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Identity`}),`: tenant application`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Credentials`}),`: `,_jsx(_components.code,{children:`client_id`}),` and `,_jsx(_components.code,{children:`client_secret`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Flow`}),`: OAuth 2.0 `,_jsx(_components.code,{children:`client_credentials`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`requesting-a-token`,children:`Requesting A Token`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,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:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://admin-api.trueparser.com/connect/token`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/x-www-form-urlencoded\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"grant_type=client_credentials\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"client_id=YOUR_CLIENT_ID\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"client_secret=YOUR_CLIENT_SECRET\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"scope=TrueParser.API\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`access-token-lifetime`,children:`Access Token Lifetime`}),`\n`,_jsx(_components.p,{children:`The access token lifetime is configured to 15 minutes.`}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`A 15-minute access token should not be a bottleneck for M2M clients if your\nbackend caches the token and renews it close to expiry. The usual anti-pattern\nis requesting a new token for every API call.`})}),`\n`,_jsx(Heading,{level:`2`,id:`token-claims`,children:`Token Claims`}),`\n`,_jsx(_components.p,{children:`For tenant apps, the access token is enriched with claims from tenant and app metadata.`}),`\n`,_jsx(_components.p,{children:`Common claims include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`sub`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`tenantid`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`appId`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`licenseRegionCode`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`dbCode`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`allowed_domain_1`}),`, `,_jsx(_components.code,{children:`allowed_domain_2`}),`, `,_jsx(_components.code,{children:`allowed_domain_3`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`entitlements`}),` when a usable plan is assigned`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Example:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"iss\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://admin-api.trueparser.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sub\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"your_client_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"tenantid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"3f9a6c6e-...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"appId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"7b1c0d8c-...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"licenseRegionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"aws-us-east-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dbCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"region-db-code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"allowed_domain_1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"localhost:3000\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"entitlements\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"maxDocumentUnitsPerMonth\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"advancedPdfExtraction\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ocrPdfExtraction\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-required-for-token-issuance`,children:`What Is Required For Token Issuance`}),`\n`,_jsx(_components.p,{children:`For tenant apps, token issuance depends on app and tenant state.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`the app must exist`}),`\n`,_jsx(_components.li,{children:`the app must be enabled`}),`\n`,_jsx(_components.li,{children:`the tenant must be active`}),`\n`,_jsx(_components.li,{children:`the app must have a license region`}),`\n`,_jsx(_components.li,{children:`the app must have a stamped database code`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`plan-impact-on-tokens`,children:`Plan Impact On Tokens`}),`\n`,_jsxs(_components.p,{children:[`Plan assignment affects the `,_jsx(_components.code,{children:`entitlements`}),` claim.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`no plan assigned: token issuance can still succeed, but `,_jsx(_components.code,{children:`entitlements`}),` is omitted`]}),`\n`,_jsxs(_components.li,{children:[`usable plan assigned: token includes `,_jsx(_components.code,{children:`entitlements`})]}),`\n`,_jsx(_components.li,{children:`retired plan assigned: token issuance is blocked`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`related-docs`,children:`Related Docs`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/dashboard/onboarding`,children:`Onboarding`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/dashboard/app-setup`,children:`App Setup and Credentials`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/dashboard/demo-ui`,children:`Demo UI`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/dashboard/billing`,children:`Billing`})}),`\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":"Authentication","description":"How dashboard users and tenant apps authenticate against the current backend.","href":"/dashboard/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Authentication Model","slug":"authentication-model","depth":2,"children":[]},{"title":"1. Dashboard Sign-In","slug":"1-dashboard-sign-in","depth":2,"children":[]},{"title":"2. Machine Access For Tenant Apps","slug":"2-machine-access-for-tenant-apps","depth":2,"children":[{"title":"Requesting A Token","slug":"requesting-a-token","depth":3,"children":[]},{"title":"Access Token Lifetime","slug":"access-token-lifetime","depth":3,"children":[]}]},{"title":"Token Claims","slug":"token-claims","depth":2,"children":[]},{"title":"What Is Required For Token Issuance","slug":"what-is-required-for-token-issuance","depth":2,"children":[]},{"title":"Plan Impact On Tokens","slug":"plan-impact-on-tokens","depth":2,"children":[]},{"title":"Related Docs","slug":"related-docs","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"trueparser","siteName":"TrueParser","title":"Authentication - TrueParser","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-28T17:18:30.456Z","originalFileLocation":"dashboard/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=\"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=\"How dashboard users and tenant apps authenticate against the current backend.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TrueParser\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/trueparser/WUFiEVjDJtsKy2dA/_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/trueparser/WUFiEVjDJtsKy2dA/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/trueparser/WUFiEVjDJtsKy2dA/_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/trueparser/WUFiEVjDJtsKy2dA/_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/trueparser/WUFiEVjDJtsKy2dA/_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/trueparser/WUFiEVjDJtsKy2dA/_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/trueparser/WUFiEVjDJtsKy2dA/_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/trueparser/WUFiEVjDJtsKy2dA/_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/trueparser/WUFiEVjDJtsKy2dA/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authentication - TrueParser\">\u003cmeta data-mint-head property=\"og:description\" content=\"How dashboard users and tenant apps authenticate against the current backend.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TrueParser\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trueparser.com/dashboard/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://trueparser.mintlify.app/_mintlify/api/og/v2?division=Dashboard\u0026amp;title=Authentication\u0026amp;description=How+dashboard+users+and+tenant+apps+authenticate+against+the+current+backend.\u0026amp;theme=819b7d6dd5d5c343db47deef\u0026amp;signature=93a1c33fc31e2012d6d4677446b7aa15ed494e6e9e6485664930bf2886e1f194\">\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=\"Authentication - TrueParser\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How dashboard users and tenant apps authenticate against the current backend.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://trueparser.mintlify.app/_mintlify/api/og/v2?division=Dashboard\u0026amp;title=Authentication\u0026amp;description=How+dashboard+users+and+tenant+apps+authenticate+against+the+current+backend.\u0026amp;theme=819b7d6dd5d5c343db47deef\u0026amp;signature=93a1c33fc31e2012d6d4677446b7aa15ed494e6e9e6485664930bf2886e1f194\">\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/trueparser/WUFiEVjDJtsKy2dA/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TrueParser\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0047AB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trueparser.com/dashboard/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/dashboard/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trueparser.com/#organization\",\"name\":\"TrueParser\",\"url\":\"https://docs.trueparser.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/trueparser/b7cscsNScG18of8Y/logo/dark.png?fit=max\u0026auto=format\u0026n=b7cscsNScG18of8Y\u0026q=85\u0026s=10e309e3a6925f82bfeb4495b3b5ebd9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trueparser.com#website\",\"name\":\"TrueParser\",\"url\":\"https://docs.trueparser.com\",\"publisher\":{\"@id\":\"https://docs.trueparser.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trueparser.com/dashboard/authentication#webpage\",\"url\":\"https://docs.trueparser.com/dashboard/authentication\",\"name\":\"Authentication\",\"description\":\"How dashboard users and tenant apps authenticate against the current backend.\",\"dateModified\":\"2026-04-28T17:18:30.456Z\",\"isPartOf\":{\"@id\":\"https://docs.trueparser.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trueparser.com/dashboard/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trueparser.com/dashboard/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Dashboard\",\"item\":\"https://docs.trueparser.com/dashboard/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication\",\"item\":\"https://docs.trueparser.com/dashboard/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.trueparser.com/dashboard/authentication#article\",\"headline\":\"Authentication\",\"name\":\"Authentication\",\"description\":\"How dashboard users and tenant apps authenticate against the current backend.\",\"url\":\"https://docs.trueparser.com/dashboard/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trueparser.com/dashboard/authentication#webpage\"},\"dateModified\":\"2026-04-28T17:18:30.456Z\",\"publisher\":{\"@id\":\"https://docs.trueparser.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trueparser.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TrueParser\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TrueParser","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://trueparser.com/blog"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Getting started","icon":"rocket-launch","pages":[{"title":"Introduction","href":""},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Dashboard","icon":"network-wired","pages":[{"title":"Dashboard Overview","href":"/dashboard/overview"},{"title":"Onboarding Guide","href":"/dashboard/onboarding"},{"title":"Users and Roles","href":"/dashboard/users-and-roles"},{"title":"App Setup and Config","description":"Create your tenant application, understand required fields, manage credentials, and configure custom storage.","href":"/dashboard/app-setup"},{"title":"Authentication","href":"/dashboard/authentication"},{"title":"License Regions","description":"Understand how license regions map apps to usage-metrics storage and how this differs from per-app output storage.","href":"/dashboard/license-regions"},{"title":"Plans and Billing","href":"/dashboard/billing"},{"title":"Demo UI","href":"/dashboard/demo-ui"}]},{"group":"Parsing Engine","icon":"microchip","pages":[{"title":"Overview","href":"/parsing-engine/overview"},{"title":"Document Ingestion","href":"/parsing-engine/ingestion"},{"title":"Intelligent Routing","href":"/parsing-engine/routing"},{"title":"Result Persistence","href":"/parsing-engine/storage"},{"title":"Result Retrieval","href":"/parsing-engine/delivery"}]},{"group":"Internals","icon":"gears","pages":[{"title":"Plans and Limits","href":"/internals/plans-and-limits"},{"title":"Error Reference","href":"/internals/error-reference"},{"title":"Reliability","href":"/internals/reliability"},{"title":"Rate Limits","href":"/internals/rate-limits"},{"title":"Security and Hardening","href":"/internals/security"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/endpoints"}]},{"tab":"Output Contracts","pages":[{"title":"Output Contracts","href":"/output-contracts/overview"}]}]},"title":"Authentication - TrueParser","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}