How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.
Requests to Infino Cloud are authenticated with an API key. This
page covers where the key comes from, how to supply it, how it travels on the wire, and
how to rotate it.
An API key is a string beginning inf_…, created in the Infino Cloud console at
platform.infino.ws — the only place keys are minted (there
is no SDK or API call to create one). Treat it like a password: it grants full access to
the databases it’s scoped to.You give the key to connect in one of two ways.Pass it explicitly:
import { connect } from "@infino-ai/infino";const db = connect("https://api.platform.infino.ws/my-app", { apiKey: "inf_…" });
use infino::{connect_with, ConnectOptions};let db = connect_with( "https://api.platform.infino.ws/my-app", ConnectOptions::new().with_api_key("inf_…"),)?;
Or read it from the environment. Set INFINO_API_KEY and the key argument becomes
optional. This keeps the secret out of your source:
export INFINO_API_KEY="inf_…"
db = infino.connect("https://api.platform.infino.ws/my-app")
const db = connect("https://api.platform.infino.ws/my-app");
let db = connect("https://api.platform.infino.ws/my-app")?;
Prefer INFINO_API_KEY over hard-coding the key. It keeps the secret out of your code
and version control, and lets deployment tooling inject it at runtime.
The API key is sent as an HTTP Authorization: Bearer <key> header on every request:
Authorization: Bearer inf_…
https:// is required for any remote host so the key is never sent in the clear.
Plain http:// is accepted only for localhost / 127.0.0.1 (loopback), for local
development against a service you run yourself. A remote http:// URL is rejected at
connect, so a bearer token never travels over an unencrypted connection.
Rotate a leaked or expiring key in the console. Create a new key, roll it out to
your deployments (update INFINO_API_KEY or the value you pass to connect), then
revoke the old one. A revoked key stops working immediately, so revoke only after the
new key is in place.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Infino","description":"Infino is an open-source retrieval engine for full-text, vector, and SQL search, with your data stored as Apache Parquet on object storage.","colors":{"primary":"#d24011","light":"#e8623a","dark":"#d24011"},"logo":{"light":"https://mintcdn.com/infino-29/sXqDYmwcZ7BW4kvO/logo/infino-logo.png?fit=max\u0026auto=format\u0026n=sXqDYmwcZ7BW4kvO\u0026q=85\u0026s=6bf8ba5e6249a14bb302a90e30e5e18f","dark":"https://mintcdn.com/infino-29/sXqDYmwcZ7BW4kvO/logo/infino-logo.png?fit=max\u0026auto=format\u0026n=sXqDYmwcZ7BW4kvO\u0026q=85\u0026s=6bf8ba5e6249a14bb302a90e30e5e18f","href":"https://infino.ai"},"favicon":"https://mintcdn.com/infino-29/LrgKEC9MS1pd7XX7/favicon.png?fit=max\u0026auto=format\u0026n=LrgKEC9MS1pd7XX7\u0026q=85\u0026s=e08bd7081efa9de5d611ea206ba6e46c","navbar":{"links":[{"href":"https://infino.ai","label":"Home"},{"href":"https://infino.ai/vs","label":"Compare"},{"href":"https://infino.ai/cloud","label":"Infino Cloud"},{"href":"https://github.com/infino-ai/infino","label":"GitHub"}],"primary":{"type":"button","label":"Talk to us","href":"mailto:info@infino.ai"}},"footer":{"socials":{"github":"https://github.com/infino-ai/infino"},"links":[{"header":"Resources","items":[{"label":"GitHub","href":"https://github.com/infino-ai/infino"},{"label":"Issues","href":"https://github.com/infino-ai/infino/issues"}]}]},"search":{"prompt":"Search the Infino docs…"},"seo":{"metatags":{"canonical":"https://infino.ai/docs","og:site_name":"Infino","og:type":"website","og:image":"/images/og-card.png","twitter:card":"summary_large_image","twitter:image":"/images/og-card.png"},"indexing":"all"},"fonts":{"family":"Inter"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"infino-29","hasAudioNarration":false,"actualSubdomain":"infino-29","customDomains":["infino.ai"],"gitSource":{"type":"github","owner":"infino-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"3b327719-300a-4e6d-9a77-2f4c2319b6e0","liveDeploymentHistoryId":"6ae435a8492eee9d6caa8294","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae435a8492eee9d6caa8294"},"feedback":{"agentFeedback":true,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae435a8492eee9d6caa8294","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Documentation","count":25},{"language":"default","tag":"API Reference","count":21},{"language":"default","tag":"REST API","count":18},{"language":"default","tag":"Infino Cloud","count":9},{"language":"default","tag":"Guides","count":9},{"language":"default","tag":"Search","count":7},{"language":"default","tag":"Reference","count":4},{"language":"default","tag":"Databases","count":4},{"language":"default","tag":"Tables","count":4},{"language":"default","tag":"SDKs \u0026 CLI","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","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":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"cloud/authentication","slug":"/cloud/authentication","pageMetadata":{"title":"Authentication","icon":"key","description":"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.","href":"/cloud/authentication"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.\"\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`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Requests to `,_jsx(_components.a,{href:`/cloud/quickstart`,children:`Infino Cloud`}),` are authenticated with an `,_jsx(_components.strong,{children:`API key`}),`. This\npage covers where the key comes from, how to supply it, how it travels on the wire, and\nhow to rotate it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`api-keys`,children:`API keys`}),`\n`,_jsxs(_components.p,{children:[`An API key is a string beginning `,_jsx(_components.code,{children:`inf_…`}),`, created in the Infino Cloud console at\n`,_jsx(_components.a,{href:`https://platform.infino.ws`,children:`platform.infino.ws`}),` — the only place keys are minted (there\nis no SDK or API call to create one). Treat it like a password: it grants full access to\nthe databases it’s scoped to.`]}),`\n`,_jsxs(_components.p,{children:[`You give the key to `,_jsx(_components.code,{children:`connect`}),` in one of two ways.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Pass it explicitly:`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,icon:`python`,numberOfLines:`3`,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:`3`,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:` infino`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`db `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` infino.connect(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.platform.infino.ws/my-app\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},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:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"inf_…\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node.js`,icon:`node-js`,numberOfLines:`3`,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:`3`,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:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`connect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@infino-ai/infino\"`}),_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:` db`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` connect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.platform.infino.ws/my-app\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`apiKey:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"inf_…\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Rust`,icon:`rust`,numberOfLines:`6`,language:`rust`,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:`rust`,children:_jsxs(_components.code,{language:`rust`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` infino`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`::`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{connect_with, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`ConnectOptions`}),_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:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` db`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` connect_with`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.platform.infino.ws/my-app\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` ConnectOptions`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`::`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`new`}),_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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`with_api_key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"inf_…\"`}),_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\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Or read it from the environment.`}),` Set `,_jsx(_components.code,{children:`INFINO_API_KEY`}),` and the key argument becomes\noptional. This keeps the secret out of your source:`]}),`\n`,_jsx(CodeBlock,{filename:``,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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` INFINO_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"inf_…\"`})]}),`\n`]})})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,icon:`python`,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`db `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` infino.connect(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.platform.infino.ws/my-app\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node.js`,icon:`node-js`,numberOfLines:`1`,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:`1`,children:[_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:` db`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` connect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.platform.infino.ws/my-app\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Rust`,icon:`rust`,numberOfLines:`1`,language:`rust`,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:`rust`,children:_jsxs(_components.code,{language:`rust`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` db`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` connect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.platform.infino.ws/my-app\"`}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Prefer `,_jsx(_components.code,{children:`INFINO_API_KEY`}),` over hard-coding the key. It keeps the secret out of your code\nand version control, and lets deployment tooling inject it at runtime.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`how-the-key-is-sent`,children:`How the key is sent`}),`\n`,_jsxs(_components.p,{children:[`The API key is sent as an HTTP `,_jsx(_components.code,{children:`Authorization: Bearer \u003ckey>`}),` header on every request:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`http`,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:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Authorization`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Bearer inf_…`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`https://`}),` is required for any remote host`]}),` so the key is never sent in the clear.\nPlain `,_jsx(_components.code,{children:`http://`}),` is accepted only for `,_jsx(_components.code,{children:`localhost`}),` / `,_jsx(_components.code,{children:`127.0.0.1`}),` (loopback), for local\ndevelopment against a service you run yourself. A remote `,_jsx(_components.code,{children:`http://`}),` URL is rejected at\n`,_jsx(_components.code,{children:`connect`}),`, so a bearer token never travels over an unencrypted connection.`]}),`\n`,_jsx(Heading,{level:`2`,id:`rotating-a-key`,children:`Rotating a key`}),`\n`,_jsxs(_components.p,{children:[`Rotate a leaked or expiring key in the `,_jsx(_components.a,{href:`https://platform.infino.ws`,children:`console`}),`. Create a new key, roll it out to\nyour deployments (update `,_jsx(_components.code,{children:`INFINO_API_KEY`}),` or the value you pass to `,_jsx(_components.code,{children:`connect`}),`), then\nrevoke the old one. A revoked key stops working immediately, so revoke only after the\nnew key is in place.`]}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/cloud/quickstart`,children:`Quickstart`}),` — connect, provision a database, and run your first search.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/storage`,children:`Connect \u0026 storage`}),` — local and object-storage backends.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Authentication","icon":"key","description":"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.","href":"/cloud/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"API keys","slug":"api-keys","depth":2,"children":[]},{"title":"How the key is sent","slug":"how-the-key-is-sent","depth":2,"children":[]},{"title":"Rotating a key","slug":"rotating-a-key","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/infino-29/645d308d2f9fae79/structured-data.js","/docs/_mintlify/custom/infino-29/ec3d5239f2e7ff69/same-tab-links.js","/docs/_mintlify/custom/infino-29/cf391a6d1558677e/context7-widget.js"],"subdomain":"infino-29","siteName":"Infino","title":"Authentication - Infino","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-03T10:11:53.854Z","gitLastModified":"2026-08-03T10:10:39.000Z","originalFileLocation":"cloud/authentication.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Infino\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_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=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authentication - Infino\">\u003cmeta data-mint-head property=\"og:description\" content=\"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Infino\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://infino.ai/docs/cloud/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://infino-29.mintlify.app/images/og-card.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Authentication - Infino\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://infino-29.mintlify.app/images/og-card.png\">\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=\"/docs/mintlify-assets/_mintlify/favicons/infino-29/QxzEBvRaDzIUbPUA/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Infino\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#d24011\">\u003clink data-mint-head rel=\"canonical\" href=\"https://infino.ai/docs/cloud/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/cloud/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://infino.ai/#organization\",\"name\":\"Infino\",\"url\":\"https://infino.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/infino-29/sXqDYmwcZ7BW4kvO/logo/infino-logo.png?fit=max\u0026auto=format\u0026n=sXqDYmwcZ7BW4kvO\u0026q=85\u0026s=6bf8ba5e6249a14bb302a90e30e5e18f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://infino.ai/docs#website\",\"name\":\"Infino\",\"url\":\"https://infino.ai/docs\",\"publisher\":{\"@id\":\"https://infino.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://infino.ai/docs/cloud/authentication#webpage\",\"url\":\"https://infino.ai/docs/cloud/authentication\",\"name\":\"Authentication\",\"description\":\"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.\",\"dateModified\":\"2026-08-03T10:10:39.000Z\",\"isPartOf\":{\"@id\":\"https://infino.ai/docs#website\"},\"breadcrumb\":{\"@id\":\"https://infino.ai/docs/cloud/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://infino.ai/docs/cloud/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Infino Cloud\",\"item\":\"https://infino.ai/docs/cloud/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication\",\"item\":\"https://infino.ai/docs/cloud/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://infino.ai/docs/cloud/authentication#article\",\"headline\":\"Authentication\",\"name\":\"Authentication\",\"description\":\"How Infino Cloud authenticates requests — API keys, the INFINO_API_KEY environment variable, the Authorization Bearer header, the https requirement, and key rotation.\",\"url\":\"https://infino.ai/docs/cloud/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://infino.ai/docs/cloud/authentication#webpage\"},\"image\":\"https://infino.ai/images/og-card.png\",\"dateModified\":\"2026-08-03T10:10:39.000Z\",\"publisher\":{\"@id\":\"https://infino.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://infino.ai/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Infino\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Infino","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get started","pages":[{"title":"Infino: open-source retrieval engine for AI apps","icon":"house","href":""},{"title":"Quickstart: install Infino and run your first search","icon":"rocket","href":"/quickstart"},{"title":"Core concepts: how Infino indexes and queries Parquet","icon":"diagram-project","href":"/core-concepts"}]},{"group":"Guides","pages":[{"title":"Connect \u0026 storage: memory, disk, S3, and Azure","icon":"cloud","href":"/guides/storage"},{"title":"Tables: schemas, rows, updates, and compaction","icon":"table","href":"/guides/tables"},{"title":"Embeddings: bring your own vectors to Infino","icon":"vector-square","href":"/guides/embeddings"},{"title":"Indexing: BM25 full-text and IVF vector indexes","icon":"sitemap","href":"/guides/indexing"},{"title":"Search: BM25, vector, hybrid, and SQL retrieval","icon":"magnifying-glass","href":"/guides/search"},{"title":"Implementing hybrid search on Apache Parquet files","icon":"layer-group","href":"/guides/hybrid-search-on-parquet"},{"title":"Integrating SQL analytics with vector and full-text search","icon":"table","href":"/guides/sql-analytics-with-search"},{"title":"Building a hybrid RAG pipeline over company documents","icon":"file-lines","href":"/guides/hybrid-rag-over-documents"},{"title":"Parquet interop: read Infino tables with DuckDB and pandas","icon":"lock-open","href":"/guides/parquet-interop"}]},{"group":"Infino Cloud","pages":[{"title":"Infino Cloud","icon":"building","href":"/cloud/index"},{"title":"Quickstart","icon":"cloud","description":"Run the same Infino retrieval API against Infino Cloud, the hosted service. Only the connect target changes; every table and search call stays the same.","href":"/cloud/quickstart"},{"title":"Authentication","icon":"key","href":"/cloud/authentication"},{"title":"Architecture","icon":"sitemap","description":"How Infino Cloud is structured at a high level — a control plane, a serving layer, and object storage holding your data as Parquet, separating control, compute, and storage.","href":"/cloud/architecture"},{"title":"Bring Your Own Bucket","icon":"bucket","tag":"Enterprise","href":"/cloud/bring-your-own-bucket"},{"title":"Customer-Managed Encryption Keys","icon":"lock","tag":"Enterprise","href":"/cloud/customer-managed-keys"},{"title":"Errors \u0026 retries","icon":"arrows-rotate","href":"/cloud/errors"},{"title":"Limits","icon":"gauge-high","href":"/cloud/limits"},{"title":"FAQ","icon":"circle-question","href":"/cloud/faq"}]},{"group":"Reference","pages":[{"title":"SQL reference for Infino queries and search functions","icon":"database","href":"/sql-reference"},{"title":"Infino FAQ: servers, durability, search, and embeddings","icon":"circle-question","href":"/faq"},{"title":"Infino tradeoffs: where it fits and where it doesn't","icon":"scale-balanced","href":"/tradeoffs"},{"title":"Troubleshooting common Infino errors and fixes","icon":"wrench","href":"/troubleshooting"}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/mcp"}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/tutorials"}]},{"tab":"Use Cases","pages":[{"title":"Use Cases","href":"/use-cases"}]},{"tab":"Demos","pages":[{"title":"Demos","href":"/demos"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference"}]}]},"basePath":"","title":"Authentication - Infino","buildId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","deploymentId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","dynamics":[],"chunks":[]}