Name your key descriptively (e.g., “Production Server”, “Development”)
Choose what the key is allowed to do:
View only
View, add, and edit
View, add, edit, and move to trash (the default)
Full access — also permits permanent deletion
Choose which libraries it can reach — All current and future libraries,
or Selected libraries (only the ones you pick; new libraries aren’t
added automatically)
Copy and securely store the key
Scope each key to the least authority the integration needs. Creating keys
through the REST API additionally lets you combine actions freely rather than
picking one of the presets above — read is always required, and at least one
action must be set.An All current and future libraries key also reaches libraries you join
later, within your current membership role and the key’s action set. This is
an intentional expansion for existing all-library keys. A Selected
libraries key keeps its original selected IDs; joining another library does
not add it. Library Sharing explains the
membership and scope rules. Sharing invitations and membership management
require a first-party session, so an API key cannot use those endpoints even
when its scope includes the library.
API keys are shown only once when created. Store them securely in environment variables or a secrets manager. Never commit API keys to version control.
{ "error": "unauthorized", "message": "Invalid or expired token"}
Solutions:
Verify the key is copied correctly (should start with apikey_)
Check it hasn’t been revoked in the dashboard
Ensure you’re using the correct environment’s key
403 Forbidden — Insufficient permissions:
{ "error": "forbidden", "message": "Insufficient permissions for this operation"}
429 Too Many Requests — Rate limit exceeded. See Rate Limiting for details.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Gumnut AI","description":"Gumnut is an AI-powered, open alternative to Google and Apple Photos — and an open platform for building on your library through a REST API, native SDKs, a hosted MCP server, and Immich compatibility.","colors":{"primary":"#5A4CD6","light":"#8E80F0","dark":"#5A4CD6"},"logo":{"light":"https://mintcdn.com/gumnutai/g7uvIAJIK6-HCQWp/logo/gumnut-logotype-horizontal-light.svg?fit=max\u0026auto=format\u0026n=g7uvIAJIK6-HCQWp\u0026q=85\u0026s=2a6ec085314f83e9fb98e806c60a6667","dark":"https://mintcdn.com/gumnutai/g7uvIAJIK6-HCQWp/logo/gumnut-logotype-horizontal-dark.svg?fit=max\u0026auto=format\u0026n=g7uvIAJIK6-HCQWp\u0026q=85\u0026s=a067b12c8fb73332dc59ffbc25ef7074"},"favicon":"https://mintcdn.com/gumnutai/Hs-Y3ah5ynxxRsxf/favicon.ico?fit=max\u0026auto=format\u0026n=Hs-Y3ah5ynxxRsxf\u0026q=85\u0026s=56f919e27dd1e3fa1b120b9c062d919f","background":{"color":{"light":"#FFFFFF","dark":"#171717"}},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://app.gumnut.ai"}},"footer":{"links":[{"header":"Product","items":[{"label":"Home","href":"https://www.gumnut.ai"},{"label":"Features","href":"https://www.gumnut.ai"},{"label":"Developers","href":"https://www.gumnut.ai"},{"label":"FAQ","href":"https://www.gumnut.ai"}]},{"header":"Developers","items":[{"label":"Getting Started","href":"/guides/getting-started/introduction"},{"label":"API Docs","href":"/api-reference"},{"label":"SDK Docs","href":"/guides/sdks/overview"},{"label":"MCP Docs","href":"/guides/mcp/overview"}]},{"header":"Company","items":[{"label":"About","href":"https://www.gumnut.ai/about"},{"label":"Blog","href":"https://blog.gumnut.ai/"},{"label":"Support","href":"https://www.gumnut.ai/contact"},{"label":"Privacy Policy","href":"https://www.gumnut.ai/privacy"}]}]},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Gumnut Home","icon":"house","href":"https://www.gumnut.ai"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"gumnutai","hasAudioNarration":false,"actualSubdomain":"gumnutai","customDomains":["docs.gumnut.ai"],"gitSource":{"type":"github","owner":"gumnut-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea62203f24ff6e33f1885b","collectionId":"5da0f67e-4b57-451d-a394-8a9ff24ec665","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea62203f24ff6e33f1885b"},"feedback":{"agentFeedback":true},"entitlements":{},"buildId":"6aea62203f24ff6e33f1885b","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API reference","count":81},{"language":"default","tag":"Guides","count":36},{"language":"default","tag":"assets","count":19},{"language":"default","tag":"libraries","count":11},{"language":"default","tag":"Product features","count":10},{"language":"default","tag":"APIs","count":9},{"language":"default","tag":"albums","count":7},{"language":"default","tag":"people","count":7},{"language":"default","tag":"stacks","count":7},{"language":"default","tag":"library-invitations","count":6}]},"assistantConfig":{},"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":"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":"vite-origin","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":"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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/authentication/api-keys","slug":"/guides/authentication/api-keys","pageMetadata":{"title":"API Keys","description":"Create and manage API keys for authenticating with the Gumnut API","href":"/guides/authentication/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 and manage API keys for authenticating with the Gumnut API\"\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,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`API keys are the simplest way to authenticate with Gumnut. They’re ideal for server-side applications, scripts, automation, and CI/CD pipelines.`}),`\n`,_jsx(Heading,{level:`2`,id:`creating-an-api-key`,children:`Creating an API Key`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Log into the `,_jsx(_components.a,{href:`https://app.gumnut.ai`,children:`Gumnut Dashboard`})]}),`\n`,_jsxs(_components.li,{children:[`Navigate to `,_jsx(_components.strong,{children:`API Keys`})]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Create API Key`})]}),`\n`,_jsx(_components.li,{children:`Name your key descriptively (e.g., “Production Server”, “Development”)`}),`\n`,_jsxs(_components.li,{children:[`Choose what the key is allowed to do:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`View only`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`View, add, and edit`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`View, add, edit, and move to trash`}),` (the default)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Full access`}),` — also permits permanent deletion`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Choose which libraries it can reach — `,_jsx(_components.strong,{children:`All current and future libraries`}),`,\nor `,_jsx(_components.strong,{children:`Selected libraries`}),` (only the ones you pick; new libraries aren’t\nadded automatically)`]}),`\n`,_jsx(_components.li,{children:`Copy and securely store the key`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Scope each key to the least authority the integration needs. Creating keys\nthrough the REST API additionally lets you combine actions freely rather than\npicking one of the presets above — `,_jsx(_components.code,{children:`read`}),` is always required, and at least one\naction must be set.`]}),`\n`,_jsxs(_components.p,{children:[`An `,_jsx(_components.strong,{children:`All current and future libraries`}),` key also reaches libraries you join\nlater, within your current membership role and the key’s action set. This is\nan intentional expansion for existing all-library keys. A `,_jsx(_components.strong,{children:`Selected\nlibraries`}),` key keeps its original selected IDs; joining another library does\nnot add it. `,_jsx(_components.a,{href:`/guides/apis/library-sharing`,children:`Library Sharing`}),` explains the\nmembership and scope rules. Sharing invitations and membership management\nrequire a first-party session, so an API key cannot use those endpoints even\nwhen its scope includes the library.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`API keys are shown only once when created. Store them securely in environment variables or a secrets manager. Never commit API keys to version control.`})}),`\n`,_jsx(Heading,{level:`2`,id:`using-api-keys`,children:`Using API Keys`}),`\n`,_jsxs(_components.p,{children:[`Include your API key in the `,_jsx(_components.code,{children:`Authorization`}),` header as a Bearer token:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.gumnut.ai/api/assets`}),_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:` \"Authorization: Bearer apikey_your_api_key_here\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`typescript-sdk`,children:`TypeScript SDK`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Gumnut`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'gumnut-sdk'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Gumnut`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` apiKey:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`GUMNUT_API_KEY`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`python-sdk`,children:`Python SDK`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`python`,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:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` gumnut `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Gumnut`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Gumnut(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` api_key`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`os.environ.get(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"GUMNUT_API_KEY\"`}),_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:`3`,id:`node-js-with-axios`,children:`Node.js with axios`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` axios`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'axios'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` gumnutApi`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` axios`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`create`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` baseURL:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api.gumnut.ai'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Authorization:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `Bearer \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`process`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`GUMNUT_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},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`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` gumnutApi`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`get`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'/api/assets'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`managing-keys`,children:`Managing Keys`}),`\n`,_jsxs(_components.p,{children:[`View and manage API keys in the `,_jsx(_components.a,{href:`https://app.gumnut.ai`,children:`dashboard`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`See creation date and last used time`}),`\n`,_jsx(_components.li,{children:`Track usage statistics`}),`\n`,_jsx(_components.li,{children:`Revoke keys instantly`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`error-handling`,children:`Error Handling`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`401 Unauthorized`}),` — Invalid or expired API key:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,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:`4`,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:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"unauthorized\"`}),_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:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Invalid or expired token\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Solutions:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Verify the key is copied correctly (should start with `,_jsx(_components.code,{children:`apikey_`}),`)`]}),`\n`,_jsx(_components.li,{children:`Check it hasn’t been revoked in the dashboard`}),`\n`,_jsx(_components.li,{children:`Ensure you’re using the correct environment’s key`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`403 Forbidden`}),` — Insufficient permissions:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,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:`4`,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:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"forbidden\"`}),_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:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Insufficient permissions for this operation\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`429 Too Many Requests`}),` — Rate limit exceeded. See `,_jsx(_components.a,{href:`/guides/apis/rate-limiting`,children:`Rate Limiting`}),` for details.`]})]})}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 Keys","description":"Create and manage API keys for authenticating with the Gumnut API","href":"/guides/authentication/api-keys"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Creating an API Key","slug":"creating-an-api-key","depth":2,"children":[]},{"title":"Using API Keys","slug":"using-api-keys","depth":2,"children":[{"title":"TypeScript SDK","slug":"typescript-sdk","depth":3,"children":[]},{"title":"Python SDK","slug":"python-sdk","depth":3,"children":[]},{"title":"Node.js with axios","slug":"node-js-with-axios","depth":3,"children":[]}]},{"title":"Managing Keys","slug":"managing-keys","depth":2,"children":[]},{"title":"Error Handling","slug":"error-handling","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"gumnutai","siteName":"Gumnut AI","title":"API Keys - Gumnut AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T19:23:49.631Z","originalFileLocation":"guides/authentication/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 and manage API keys for authenticating with the Gumnut API\">\u003cmeta data-mint-head name=\"application-name\" content=\"Gumnut AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/gumnutai/HakcV-TGKbGh8wwG/_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/gumnutai/HakcV-TGKbGh8wwG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/gumnutai/HakcV-TGKbGh8wwG/_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/gumnutai/HakcV-TGKbGh8wwG/_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/gumnutai/HakcV-TGKbGh8wwG/_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/gumnutai/HakcV-TGKbGh8wwG/_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/gumnutai/HakcV-TGKbGh8wwG/_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/gumnutai/HakcV-TGKbGh8wwG/_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/gumnutai/HakcV-TGKbGh8wwG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"API Keys - Gumnut AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create and manage API keys for authenticating with the Gumnut API\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Gumnut AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.gumnut.ai/guides/authentication/api-keys\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://gumnutai.mintlify.app/_mintlify/api/og/v2?division=Authentication\u0026amp;title=API+Keys\u0026amp;description=Create+and+manage+API+keys+for+authenticating+with+the+Gumnut+API\u0026amp;theme=ab5c00f5c5bf5a1e2e63ce76\u0026amp;signature=c283058af1696b114ba5d761e6fc7feb036c05c179f573c7bcd218170352ec79\">\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 Keys - Gumnut AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create and manage API keys for authenticating with the Gumnut API\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://gumnutai.mintlify.app/_mintlify/api/og/v2?division=Authentication\u0026amp;title=API+Keys\u0026amp;description=Create+and+manage+API+keys+for+authenticating+with+the+Gumnut+API\u0026amp;theme=ab5c00f5c5bf5a1e2e63ce76\u0026amp;signature=c283058af1696b114ba5d761e6fc7feb036c05c179f573c7bcd218170352ec79\">\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/gumnutai/HakcV-TGKbGh8wwG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Gumnut AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5A4CD6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.gumnut.ai/guides/authentication/api-keys\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/authentication/api-keys.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.gumnut.ai/#organization\",\"name\":\"Gumnut AI\",\"url\":\"https://docs.gumnut.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/gumnutai/g7uvIAJIK6-HCQWp/logo/gumnut-logotype-horizontal-light.svg?fit=max\u0026auto=format\u0026n=g7uvIAJIK6-HCQWp\u0026q=85\u0026s=2a6ec085314f83e9fb98e806c60a6667\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.gumnut.ai#website\",\"name\":\"Gumnut AI\",\"url\":\"https://docs.gumnut.ai\",\"publisher\":{\"@id\":\"https://docs.gumnut.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.gumnut.ai/guides/authentication/api-keys#webpage\",\"url\":\"https://docs.gumnut.ai/guides/authentication/api-keys\",\"name\":\"API Keys\",\"description\":\"Create and manage API keys for authenticating with the Gumnut API\",\"dateModified\":\"2026-10-06T19:23:49.631Z\",\"isPartOf\":{\"@id\":\"https://docs.gumnut.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.gumnut.ai/guides/authentication/api-keys#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.gumnut.ai/guides/authentication/api-keys#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Authentication\",\"item\":\"https://docs.gumnut.ai/guides/authentication/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API Keys\",\"item\":\"https://docs.gumnut.ai/guides/authentication/api-keys\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.gumnut.ai/guides/authentication/api-keys#article\",\"headline\":\"API Keys\",\"name\":\"API Keys\",\"description\":\"Create and manage API keys for authenticating with the Gumnut API\",\"url\":\"https://docs.gumnut.ai/guides/authentication/api-keys\",\"mainEntityOfPage\":{\"@id\":\"https://docs.gumnut.ai/guides/authentication/api-keys#webpage\"},\"dateModified\":\"2026-10-06T19:23:49.631Z\",\"publisher\":{\"@id\":\"https://docs.gumnut.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.gumnut.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Gumnut AI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Gumnut AI","nav":{"global":{"anchors":[{"anchor":"Gumnut Home","icon":"house","href":"https://www.gumnut.ai"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/guides/getting-started/introduction"},{"title":"Quickstart","href":"/guides/getting-started/quickstart"},{"title":"Import from Google Photos or iCloud","href":"/guides/getting-started/import-from-google-or-apple"}]},{"group":"Product features","pages":[{"title":"Libraries and sharing","href":"/guides/product/libraries"},{"title":"Uploads and processing","href":"/guides/product/uploads"},{"title":"Albums","href":"/guides/product/albums"},{"title":"Searching and filtering","href":"/guides/product/search-and-filtering"},{"title":"Faces and people","href":"/guides/product/people"},{"title":"Map view","href":"/guides/product/map"},{"title":"Stacks and bursts","href":"/guides/product/stacks"},{"title":"Photo editing and versions","href":"/guides/product/editing"},{"title":"AI assistants and integrations","href":"/guides/product/ai-assistants"},{"title":"Duplicate Detection","href":"/guides/product/duplicate-detection"}]},{"group":"Authentication","pages":[{"title":"Authentication","description":"Choose the supported authentication method for Gumnut","href":"/guides/authentication/overview"},{"title":"API Keys","href":"/guides/authentication/api-keys"},{"title":"OAuth","description":"How user-facing integrations authenticate with Gumnut through Clerk","href":"/guides/authentication/oauth"}]},{"group":"APIs","pages":[{"title":"API Overview","href":"/guides/apis/overview"},{"title":"Versioning and editing assets","href":"/guides/apis/asset-versioning"},{"title":"Named Creates and Retries","href":"/guides/apis/named-creates"},{"title":"Library Sharing","href":"/guides/apis/library-sharing"},{"title":"People and Faces","href":"/guides/apis/faces-and-people"},{"title":"Requests \u0026 Responses","href":"/guides/apis/requests-and-responses"},{"title":"Pagination \u0026 Filtering","href":"/guides/apis/pagination-and-filtering"},{"title":"Syncing with Events","href":"/guides/apis/syncing-with-events"},{"title":"Rate Limiting","href":"/guides/apis/rate-limiting"}]},{"group":"SDKs","pages":[{"title":"SDKs Overview","href":"/guides/sdks/overview"},{"title":"TypeScript SDK","href":"/guides/sdks/typescript"},{"title":"Python SDK","href":"/guides/sdks/python"}]},{"group":"MCP","pages":[{"title":"MCP Overview","href":"/guides/mcp/overview"},{"title":"MCP Setup","href":"/guides/mcp/setup"},{"title":"MCP Troubleshooting","href":"/guides/mcp/troubleshooting"}]},{"group":"Immich","pages":[{"title":"Immich Overview","href":"/guides/immich/overview"},{"title":"Immich Compatibility","href":"/guides/immich/compatibility"},{"title":"Faces and People","href":"/guides/immich/faces-and-people"},{"title":"Immich Troubleshooting","href":"/guides/immich/troubleshooting"}]},{"group":"More","pages":[{"title":"Demos","href":"/guides/demos/overview"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/oauth/generate-oauth-authorization-url"}]}]},"basePath":"","title":"API Keys - Gumnut AI","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}