Full access — read + write across every TruLayer endpoint. Use for ingestion (SDK, backend services) and for anything that mutates traces, feedback, eval runs, or policies.
Query only — read-only access to traces, evals, and metrics. Use for MCP servers, AI agents, and any read-only analytical client. Query-only keys cannot ingest traces or mutate any resource.
If you are wiring TruLayer into an LLM agent or an MCP server, pick Query only. It limits blast radius if the key is leaked — an attacker cannot poison your trace data or revoke other keys.
Keys created before scopes shipped continue to work as Full access — no action required.
Revoking is immediate and cannot be undone. Revoked keys remain in the list (marked Revoked) so you keep an audit trail of when each key was active.Requests authenticated with a revoked key return HTTP 401 with error.code = "key_revoked".
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TruLayer","colors":{"primary":"#6366F1","light":"#818CF8","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/omnimodallc/Rc1rbNUGtX5WgsQI/logo/light.svg?fit=max\u0026auto=format\u0026n=Rc1rbNUGtX5WgsQI\u0026q=85\u0026s=533179b80c872f3f958c07a10a75b7ad","dark":"https://mintcdn.com/omnimodallc/Rc1rbNUGtX5WgsQI/logo/dark.svg?fit=max\u0026auto=format\u0026n=Rc1rbNUGtX5WgsQI\u0026q=85\u0026s=35f9b77cef986807c7a3f678adcfdb5e"},"favicon":"https://mintcdn.com/omnimodallc/xJho_XGKhESQfqYR/favicon.svg?fit=max\u0026auto=format\u0026n=xJho_XGKhESQfqYR\u0026q=85\u0026s=73c2634e0d88e4b01d70635608f04159","navbar":{"links":[{"href":"mailto:support@trulayer.ai","label":"Support"}],"primary":{"type":"button","label":"Sign up","href":"https://app.trulayer.ai/sign-up"}},"footer":{"socials":{"x":"https://x.com/trulayer_ai","github":"https://github.com/trulayer","linkedin":"https://linkedin.com/company/trulayer"}},"seo":{"metatags":{"canonical":"https://docs.trulayer.ai"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Dashboard","icon":"chart-line","href":"https://app.trulayer.ai"},{"anchor":"Status","icon":"signal","href":"https://status.trulayer.ai"},{"anchor":"GitHub","icon":"github","href":"https://github.com/trulayer"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"omnimodallc","hasAudioNarration":false,"actualSubdomain":"omnimodallc","customDomains":["docs.trulayer.ai"],"gitSource":{"type":"github","owner":"trulayer","repo":"docs","deployBranch":"main","isPrivate":false,"contentDirectory":"","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a5d9860526179ec9eda3322","collectionId":"4240f09b-0968-4af5-aa3a-375dde840b29","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a5d9860526179ec9eda3322"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a5d9860526179ec9eda3322:success","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Reference","count":110},{"language":"default","tag":"Endpoints","count":109},{"language":"default","tag":"Guides","count":87},{"language":"default","tag":"Dashboard","count":16},{"language":"default","tag":"Integrations","count":12},{"language":"default","tag":"control","count":9},{"language":"default","tag":"Go SDK","count":8},{"language":"default","tag":"datasets","count":8},{"language":"default","tag":"Python SDK","count":7},{"language":"default","tag":"TypeScript SDK","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"dashboard/settings-api-keys","slug":"/dashboard/settings-api-keys","pageMetadata":{"title":"Settings — API keys","description":"Create, scope, rotate, and revoke TruLayer API keys.","href":"/dashboard/settings-api-keys"},"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: \"Create, scope, rotate, and revoke TruLayer API keys.\"\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={code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`API keys authenticate your SDK, services, and read-only clients with TruLayer. Manage them under `,_jsx(_components.strong,{children:`Settings → API keys`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`list-view`,children:`List view`}),`\n`,_jsx(_components.p,{children:`Columns:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Name`}),` — the label you gave the key at creation.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Prefix`}),` — the first 8 characters of the key (e.g. `,_jsx(_components.code,{children:`tl_prod_4f2a…`}),`). The plaintext secret is never shown after creation.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Scope`}),` — `,_jsx(_components.code,{children:`full`}),` or `,_jsx(_components.code,{children:`query_only`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Created`}),` / `,_jsx(_components.strong,{children:`Last used`}),` — timestamps; stale keys are candidates for rotation.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Status`}),` — `,_jsx(_components.code,{children:`active`}),` or `,_jsx(_components.code,{children:`revoked`}),`. Revoked keys remain visible for audit.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`scopes`,children:`Scopes`}),`\n`,_jsx(_components.p,{children:`When creating a key you pick one scope:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Full access`}),` — read + write across every TruLayer endpoint. Use for ingestion (SDK, backend services) and for anything that mutates traces, feedback, eval runs, or policies.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Query only`}),` — read-only access to traces, evals, and metrics. Use for MCP servers, AI agents, and any read-only analytical client. Query-only keys cannot ingest traces or mutate any resource.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If you are wiring TruLayer into an LLM agent or an MCP server, pick `,_jsx(_components.strong,{children:`Query only`}),`. It limits blast radius if the key is leaked — an attacker cannot poison your trace data or revoke other keys.`]})}),`\n`,_jsxs(_components.p,{children:[`Keys created before scopes shipped continue to work as `,_jsx(_components.strong,{children:`Full access`}),` — no action required.`]}),`\n`,_jsx(Heading,{level:`2`,id:`creating-a-key`,children:`Creating a key`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Open `,_jsx(_components.strong,{children:`Settings → API keys`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`New key`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Give it a descriptive name (for example `,_jsx(_components.code,{children:`agent-production`}),` or `,_jsx(_components.code,{children:`ci-ingest`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`Choose a scope — `,_jsx(_components.strong,{children:`Full access`}),` or `,_jsx(_components.strong,{children:`Query only`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Create`}),`. `,_jsx(_components.strong,{children:`Copy the plaintext key immediately`}),` — it is not shown again.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Store the secret in your deployment platform’s secret manager (Vercel env vars, AWS Secrets Manager, 1Password, etc.) — never commit it to git.`}),`\n`,_jsx(Heading,{level:`2`,id:`rotating-a-key`,children:`Rotating a key`}),`\n`,_jsx(_components.p,{children:`TruLayer supports overlapping validity — create a new key, deploy it, then revoke the old one:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`New key`}),` with the same scope; name it with a version suffix (`,_jsx(_components.code,{children:`agent-production-v2`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`Roll the new key out via env vars; confirm traces are still ingesting (dashboard shows `,_jsx(_components.strong,{children:`Last used`}),` timestamp updating).`]}),`\n`,_jsx(_components.li,{children:`Revoke the old key from the list.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`No downtime if the rollout happens within the revocation window.`}),`\n`,_jsx(Heading,{level:`2`,id:`revoking-a-key`,children:`Revoking a key`}),`\n`,_jsxs(_components.p,{children:[`Revoking is immediate and cannot be undone. Revoked keys remain in the list (marked `,_jsx(_components.strong,{children:`Revoked`}),`) so you keep an audit trail of when each key was active.`]}),`\n`,_jsxs(_components.p,{children:[`Requests authenticated with a revoked key return HTTP `,_jsx(_components.code,{children:`401`}),` with `,_jsx(_components.code,{children:`error.code = \"key_revoked\"`}),`.`]})]})}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":"Settings — API keys","description":"Create, scope, rotate, and revoke TruLayer API keys.","href":"/dashboard/settings-api-keys"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"List view","slug":"list-view","depth":2,"children":[]},{"title":"Scopes","slug":"scopes","depth":2,"children":[]},{"title":"Creating a key","slug":"creating-a-key","depth":2,"children":[]},{"title":"Rotating a key","slug":"rotating-a-key","depth":2,"children":[]},{"title":"Revoking a key","slug":"revoking-a-key","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"omnimodallc","siteName":"TruLayer","title":"Settings — API keys - TruLayer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-07T16:23:44.322Z","originalFileLocation":"dashboard/settings-api-keys.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=\"Create, scope, rotate, and revoke TruLayer API keys.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TruLayer\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Settings — API keys - TruLayer\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create, scope, rotate, and revoke TruLayer API keys.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TruLayer\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trulayer.ai/dashboard/settings-api-keys\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://omnimodallc.mintlify.app/_mintlify/api/og/v2?division=Settings\u0026amp;title=Settings+%E2%80%94+API+keys\u0026amp;description=Create%2C+scope%2C+rotate%2C+and+revoke+TruLayer+API+keys.\u0026amp;theme=f30cc050865b51b401e85f73\u0026amp;signature=ecac553a03944d44a388c3c1851ef7bccc9e8de824b437a901e737b48306f134\">\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=\"Settings — API keys - TruLayer\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create, scope, rotate, and revoke TruLayer API keys.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://omnimodallc.mintlify.app/_mintlify/api/og/v2?division=Settings\u0026amp;title=Settings+%E2%80%94+API+keys\u0026amp;description=Create%2C+scope%2C+rotate%2C+and+revoke+TruLayer+API+keys.\u0026amp;theme=f30cc050865b51b401e85f73\u0026amp;signature=ecac553a03944d44a388c3c1851ef7bccc9e8de824b437a901e737b48306f134\">\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/omnimodallc/IO9_gQbDt9V1gpMF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TruLayer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trulayer.ai/dashboard/settings-api-keys\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/dashboard/settings-api-keys.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trulayer.ai/#organization\",\"name\":\"TruLayer\",\"url\":\"https://docs.trulayer.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/omnimodallc/Rc1rbNUGtX5WgsQI/logo/light.svg?fit=max\u0026auto=format\u0026n=Rc1rbNUGtX5WgsQI\u0026q=85\u0026s=533179b80c872f3f958c07a10a75b7ad\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trulayer.ai#website\",\"name\":\"TruLayer\",\"url\":\"https://docs.trulayer.ai\",\"publisher\":{\"@id\":\"https://docs.trulayer.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trulayer.ai/dashboard/settings-api-keys#webpage\",\"url\":\"https://docs.trulayer.ai/dashboard/settings-api-keys\",\"name\":\"Settings — API keys\",\"description\":\"Create, scope, rotate, and revoke TruLayer API keys.\",\"dateModified\":\"2026-05-07T16:23:44.322Z\",\"isPartOf\":{\"@id\":\"https://docs.trulayer.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trulayer.ai/dashboard/settings-api-keys#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trulayer.ai/dashboard/settings-api-keys#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Dashboard\",\"item\":\"https://docs.trulayer.ai/dashboard/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Settings — API keys\",\"item\":\"https://docs.trulayer.ai/dashboard/settings-api-keys\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.trulayer.ai/dashboard/settings-api-keys#article\",\"headline\":\"Settings — API keys\",\"name\":\"Settings — API keys\",\"description\":\"Create, scope, rotate, and revoke TruLayer API keys.\",\"url\":\"https://docs.trulayer.ai/dashboard/settings-api-keys\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trulayer.ai/dashboard/settings-api-keys#webpage\"},\"dateModified\":\"2026-05-07T16:23:44.322Z\",\"publisher\":{\"@id\":\"https://docs.trulayer.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trulayer.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TruLayer\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TruLayer","nav":{"global":{"anchors":[{"anchor":"Dashboard","icon":"chart-line","href":"https://app.trulayer.ai"},{"anchor":"Status","icon":"signal","href":"https://status.trulayer.ai"},{"anchor":"GitHub","icon":"github","href":"https://github.com/trulayer"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Getting started","pages":[{"title":"TruLayer Documentation","href":""},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Core concepts","pages":[{"title":"Overview","href":"/concepts/overview"},{"title":"Traces and spans","href":"/concepts/traces-and-spans"},{"title":"Sessions","href":"/concepts/sessions"},{"title":"Evaluations","href":"/concepts/evals"},{"title":"Feedback","href":"/concepts/feedback"},{"title":"Metrics","href":"/concepts/metrics"}]},{"group":"Python SDK","pages":[{"title":"Python SDK overview","href":"/sdks/python/overview"},{"title":"Python SDK tutorial","href":"/sdks/python/tutorial"},{"title":"Python SDK configuration","href":"/sdks/python/configuration"},{"title":"Python SDK reference","href":"/sdks/python/reference"},{"title":"Python SDK examples","href":"/sdks/python/examples"},{"title":"Testing with the Python SDK","href":"/sdks/python/testing"},{"title":"Failure behavior","href":"/sdks/python/fail-mode"}]},{"group":"TypeScript SDK","pages":[{"title":"TypeScript SDK","href":"/sdks/typescript/overview"},{"title":"TypeScript SDK tutorial","href":"/sdks/typescript/tutorial"},{"title":"TypeScript SDK configuration","href":"/sdks/typescript/configuration"},{"title":"TypeScript SDK reference","href":"/sdks/typescript/reference"},{"title":"TypeScript SDK examples","href":"/sdks/typescript/examples"},{"title":"Testing with the TypeScript SDK","href":"/sdks/typescript/testing"},{"title":"Failure behavior","href":"/sdks/typescript/fail-mode"}]},{"group":"Go SDK","pages":[{"title":"Go SDK overview","href":"/sdks/go/overview"},{"title":"Go SDK tutorial","href":"/sdks/go/tutorial"},{"title":"Go SDK configuration","href":"/sdks/go/configuration"},{"title":"Go SDK examples","href":"/sdks/go/examples"},{"title":"Failure behavior","href":"/sdks/go/fail-mode"},{"title":"Testing with the Go SDK","href":"/sdks/go/testing"},{"title":"Go SDK reference","href":"/sdks/go/reference"},{"title":"Go SDK auto-instrumentation","href":"/sdks/go/instruments"}]},{"group":"SDK features","pages":[{"title":"Redaction","href":"/sdks/redaction"}]},{"group":"Dashboard","pages":[{"title":"Dashboard overview","href":"/dashboard/overview"},{"title":"Projects","href":"/dashboard/projects"},{"title":"Traces","href":"/dashboard/traces"},{"title":"Ingestion health","href":"/dashboard/ingestion-health"},{"title":"Evals","href":"/dashboard/evals"},{"title":"Metrics","href":"/dashboard/metrics"},{"title":"Feedback","href":"/dashboard/feedback"},{"title":"Failures","href":"/dashboard/failures"},{"title":"Control","href":"/dashboard/control"},{"title":"Prompt Improvements","description":"Closed-loop prompt improvement: review model-proposed prompt diffs, ship them after an A/B replay passes, and roll back automatically when a shipped prompt regresses.","href":"/dashboard/prompt-improvements"},{"group":"Settings","pages":[{"title":"Settings — API keys","href":"/dashboard/settings-api-keys"},{"title":"Settings — Usage","description":"Track spans, evaluations, seats, and retention against your plan.","href":"/dashboard/settings-usage"},{"title":"Settings — Billing","href":"/dashboard/settings-billing"},{"title":"Settings — Team","href":"/dashboard/settings-team"},{"title":"Settings — Audit Log","href":"/dashboard/settings-audit-log"},{"title":"Settings — Appearance","href":"/dashboard/settings-appearance"}]}]},{"group":"Integrations","pages":[{"title":"Framework integrations","href":"/integrations/overview"},{"title":"OpenAI","href":"/integrations/openai"},{"title":"Anthropic","href":"/integrations/anthropic"},{"title":"Vercel AI SDK","href":"/integrations/vercel-ai-sdk"},{"title":"LangChain","href":"/integrations/langchain"},{"title":"LlamaIndex","href":"/integrations/llamaindex"},{"title":"PydanticAI","href":"/integrations/pydanticai"},{"title":"CrewAI","href":"/integrations/crewai"},{"title":"Mastra","href":"/integrations/mastra"},{"title":"DSPy","href":"/integrations/dspy"},{"title":"Haystack","href":"/integrations/haystack"},{"title":"AutoGen","href":"/integrations/autogen"}]},{"group":"Control loop","pages":[{"title":"Control loop quickstart","href":"/control-loop/quickstart"},{"title":"Control Loop v0.1 migration notes","href":"/control-loop/migration-notes"}]},{"group":"Guides","pages":[{"title":"Project lifecycle","href":"/guides/projects"},{"title":"Webhooks","href":"/guides/webhooks"},{"title":"Semantic search over spans","href":"/guides/semantic-search"},{"title":"Model routing","href":"/guides/model-routing"},{"title":"MCP server and skills","href":"/guides/mcp"},{"title":"OTLP ingest and export","href":"/guides/otlp"},{"title":"CI eval gate","href":"/guides/ci-eval-gate"},{"title":"Verifying the audit-log chain","href":"/guides/audit-verify"},{"title":"Scoped API keys","href":"/guides/api-key-scopes"},{"title":"Remediation diffs","href":"/guides/remediation-diffs"},{"title":"Changelog","href":"/guides/changelog"}]},{"group":"Best practices","pages":[{"title":"Best practices","href":"/best-practices/overview"}]},{"group":"Reference","pages":[{"title":"Glossary","href":"/glossary"},{"title":"Service Level Agreement","href":"/sla"}]},{"group":"Contributing","pages":[{"title":"Contributing to docs","href":"/development"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"title":"Settings — API keys - TruLayer","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":[],"chunks":[]}