Choose an official Gumnut SDK for Python or TypeScript
Gumnut publishes generated, typed SDKs for Python and TypeScript. Both wrap the
same REST API, accept a Gumnut API key, support synchronous or asynchronous
pagination patterns appropriate to the language, and retry selected transient
failures.
The language guides cover client setup, uploads, pagination, retries, and error
handling. For endpoints and request parameters, use each SDK’s generated API
reference:
If neither SDK fits your environment, call the REST API
directly.
{"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":""},"feedback":{"agentFeedback":true},"entitlements":{},"buildId":"6aecd2d61e9eaa8ce7a105bc","clientVersion":"0.0.4087","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":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/sdks/overview","slug":"/guides/sdks/overview","pageMetadata":{"title":"SDKs Overview","description":"Choose an official Gumnut SDK for Python or TypeScript","href":"/guides/sdks/overview"},"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: \"Choose an official Gumnut SDK for Python or TypeScript\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Gumnut publishes generated, typed SDKs for Python and TypeScript. Both wrap the\nsame REST API, accept a Gumnut API key, support synchronous or asynchronous\npagination patterns appropriate to the language, and retry selected transient\nfailures.`}),`\n`,_jsx(Heading,{level:`2`,id:`choose-an-sdk`,children:`Choose an SDK`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:_jsx(_components.a,{href:`/guides/sdks/python`,children:`Python`})}),_jsx(_components.th,{children:_jsx(_components.a,{href:`/guides/sdks/typescript`,children:`TypeScript`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Package`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`gumnut-sdk`}),` on PyPI`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`gumnut-sdk`}),` on npm`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Minimum language/runtime`}),_jsx(_components.td,{children:`Python 3.9`}),_jsx(_components.td,{children:`TypeScript 4.9; Node.js 20 LTS for Node applications`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Client styles`}),_jsx(_components.td,{children:`Synchronous and asynchronous`}),_jsx(_components.td,{children:`Promise-based`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Pagination`}),_jsx(_components.td,{children:`Synchronous and asynchronous iterators`}),_jsx(_components.td,{children:`Async iterators`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Repository`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/gumnut-ai/photos-sdk-python`,children:`photos-sdk-python`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/gumnut-ai/photos-sdk-typescript`,children:`photos-sdk-typescript`})})]})]})]}),`\n`,_jsx(_components.p,{children:`Install the package for your language:`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gumnut-sdk`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gumnut-sdk`})]}),`\n`]})})})]}),`\n`,_jsx(_components.p,{children:`The language guides cover client setup, uploads, pagination, retries, and error\nhandling. For endpoints and request parameters, use each SDK’s generated API\nreference:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/gumnut-ai/photos-sdk-python/blob/main/api.md`,children:`Python API reference`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/gumnut-ai/photos-sdk-typescript/blob/main/api.md`,children:`TypeScript API reference`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`If neither SDK fits your environment, call the `,_jsx(_components.a,{href:`/guides/apis/overview`,children:`REST API`}),`\ndirectly.`]})]})}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":"SDKs Overview","description":"Choose an official Gumnut SDK for Python or TypeScript","href":"/guides/sdks/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Choose an SDK","slug":"choose-an-sdk","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"gumnutai","siteName":"Gumnut AI","title":"SDKs Overview - Gumnut AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-12T21:04:02.517Z","originalFileLocation":"guides/sdks/overview.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=\"Choose an official Gumnut SDK for Python or TypeScript\">\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=\"SDKs Overview - Gumnut AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Choose an official Gumnut SDK for Python or TypeScript\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Gumnut AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.gumnut.ai/guides/sdks/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://gumnutai.mintlify.site/_mintlify/api/og/v2?division=SDKs\u0026amp;title=SDKs+Overview\u0026amp;description=Choose+an+official+Gumnut+SDK+for+Python+or+TypeScript\u0026amp;theme=ab5c00f5c5bf5a1e2e63ce76\u0026amp;signature=d6434320a60de58c83e0f150f371f0936d1dec0924912e80f9b8a806b61a2d5d\">\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=\"SDKs Overview - Gumnut AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Choose an official Gumnut SDK for Python or TypeScript\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://gumnutai.mintlify.site/_mintlify/api/og/v2?division=SDKs\u0026amp;title=SDKs+Overview\u0026amp;description=Choose+an+official+Gumnut+SDK+for+Python+or+TypeScript\u0026amp;theme=ab5c00f5c5bf5a1e2e63ce76\u0026amp;signature=d6434320a60de58c83e0f150f371f0936d1dec0924912e80f9b8a806b61a2d5d\">\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/sdks/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/sdks/overview.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/sdks/overview#webpage\",\"url\":\"https://docs.gumnut.ai/guides/sdks/overview\",\"name\":\"SDKs Overview\",\"description\":\"Choose an official Gumnut SDK for Python or TypeScript\",\"dateModified\":\"2026-08-12T21:04:02.517Z\",\"isPartOf\":{\"@id\":\"https://docs.gumnut.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.gumnut.ai/guides/sdks/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.gumnut.ai/guides/sdks/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Gumnut AI\",\"item\":\"https://docs.gumnut.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SDKs Overview\",\"item\":\"https://docs.gumnut.ai/guides/sdks/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.gumnut.ai/guides/sdks/overview#article\",\"headline\":\"SDKs Overview\",\"name\":\"SDKs Overview\",\"description\":\"Choose an official Gumnut SDK for Python or TypeScript\",\"url\":\"https://docs.gumnut.ai/guides/sdks/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.gumnut.ai/guides/sdks/overview#webpage\"},\"dateModified\":\"2026-08-12T21:04:02.517Z\",\"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","href":"/guides/authentication/overview"},{"title":"API Keys","href":"/guides/authentication/api-keys"},{"title":"OAuth","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","description":"Understand and handle rate limits for the Gumnut API","href":"/guides/apis/rate-limiting"}]},{"group":"SDKs","pages":[{"title":"SDKs Overview","href":"/guides/sdks/overview"},{"title":"TypeScript SDK","description":"Use the official TypeScript and JavaScript SDK for the Gumnut API","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":"SDKs Overview - Gumnut AI","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":[],"chunks":[]}