A request without a valid key gets 401 unauthenticated.
On a shared host, keep the key out of the command line, where other users can see it in the process list: put the
header in a file only you can read, and pass it with curl -H @header.txt.
A key belongs to one lab. Your lab can hold several, for example one per cluster or per person, and each can be
revoked on its own.
AICME issues keys. Ask us for a new one, or to revoke one. A revoked key gets 401 from then on.
We show a key once, when we hand it over, and we keep only a hash of it. Store it in your secret manager. Don’t
put it in git, in a Docker image, or in a log.
The package’s verifier reads the key from its environment (AICME_API_KEY). It is never written into a
package.
Your key sees your lab’s own resources, and nothing else:
Tasks your lab is granted. A task that isn’t granted returns 404, the same response as a task that doesn’t
exist. A 404 never tells you whether a task exists.
Rewards your lab created. Another lab’s reward returns 404.
Your lab comes from the key, never from the request: nothing you send can act as another lab.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"AICME","colors":{"primary":"#137a61","light":"#8cdcc8","dark":"#137a61"},"logo":{"light":"https://mintcdn.com/aicmelabs/HfQm_2RpMyfR63Aa/logo/light.svg?fit=max\u0026auto=format\u0026n=HfQm_2RpMyfR63Aa\u0026q=85\u0026s=d416acca2155ebedb8f29f6bbbbcb858","dark":"https://mintcdn.com/aicmelabs/HfQm_2RpMyfR63Aa/logo/dark.svg?fit=max\u0026auto=format\u0026n=HfQm_2RpMyfR63Aa\u0026q=85\u0026s=8b27fdd97055a6a577f233c182b9a0ad","href":"https://aicmelabs.com"},"api":{"playground":{"display":"none"}},"background":{"color":{"light":"#f4f1ea","dark":"#08090a"}},"fonts":{"family":"Geist Mono","weight":300},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"aicmelabs","hasAudioNarration":false,"actualSubdomain":"aicmelabs","customDomains":["docs.aicmelabs.com"],"gitSource":{"type":"github","owner":"aicme","repo":"arkenstone","deployBranch":"main","contentDirectory":"src/api/docs-site","isPrivate":true,"mountPath":"","label":"","_id":"6ae2cfd96268fd6f8523ae2d"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae8b9a5cb9fa025302d87b0","collectionId":"0edea12f-10ad-4356-821b-d5e1ece49600","liveDeploymentHistoryId":"6ae8b9a5cb9fa025302d87b0","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae8b9a5cb9fa025302d87b0","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Guides","count":7},{"language":"default","tag":"Concepts","count":5},{"language":"default","tag":"API reference","count":3},{"language":"default","tag":"API Reference","count":3},{"language":"default","tag":"Get started","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"authentication","slug":"/authentication","pageMetadata":{"title":"Authentication","description":"Every request carries your lab's key.","href":"/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: \"Every request carries your lab’s key.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Send your key as a bearer token on every request, in the `,_jsx(_components.code,{children:`Authorization`}),` header:`]}),`\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:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.aicmelabs.com/v1/rewards/REWARD_ID`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer your-api-key\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`A request without a valid key gets `,_jsx(_components.code,{children:`401 unauthenticated`}),`.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`On a shared host, keep the key out of the command line, where other users can see it in the process list: put the\nheader in a file only you can read, and pass it with `,_jsx(_components.code,{children:`curl -H @header.txt`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`keys`,children:`Keys`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A key belongs to one lab.`}),` Your lab can hold several, for example one per cluster or per person, and each can be\nrevoked on its own.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`AICME issues keys.`}),` Ask us for a new one, or to revoke one. A revoked key gets `,_jsx(_components.code,{children:`401`}),` from then on.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`We show a key once,`}),` when we hand it over, and we keep only a hash of it. Store it in your secret manager. Don’t\nput it in git, in a Docker image, or in a log.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The package’s verifier reads the key from its environment`}),` (`,_jsx(_components.code,{children:`AICME_API_KEY`}),`). It is never written into a\npackage.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-a-key-can-see`,children:`What a key can see`}),`\n`,_jsx(_components.p,{children:`Your key sees your lab’s own resources, and nothing else:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Tasks your lab is granted.`}),` A task that isn’t granted returns `,_jsx(_components.code,{children:`404`}),`, the same response as a task that doesn’t\nexist. A `,_jsx(_components.code,{children:`404`}),` never tells you whether a task exists.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Rewards your lab created.`}),` Another lab’s reward returns `,_jsx(_components.code,{children:`404`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Your lab comes from the key, never from the request: nothing you send can act as another lab.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Authentication","description":"Every request carries your lab's key.","href":"/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Keys","slug":"keys","depth":2,"children":[]},{"title":"What a key can see","slug":"what-a-key-can-see","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"aicmelabs","siteName":"AICME","title":"Authentication - AICME","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T16:26:21.465Z","originalFileLocation":"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=\"Every request carries your lab\u0026#x27;s key.\">\u003cmeta data-mint-head name=\"application-name\" content=\"AICME\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aicmelabs/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aicmelabs/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aicmelabs/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aicmelabs/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authentication - AICME\">\u003cmeta data-mint-head property=\"og:description\" content=\"Every request carries your lab\u0026#x27;s key.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"AICME\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.aicmelabs.com/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://aicmelabs.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Authentication\u0026amp;description=Every+request+carries+your+lab%27s+key.\u0026amp;theme=f47a4baf5062f0becca13fd9\u0026amp;signature=9ce3b537cc573404e7c79212c09f5df3b2abdcbaac2ad06327d486021dddae87\">\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 - AICME\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Every request carries your lab\u0026#x27;s key.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://aicmelabs.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Authentication\u0026amp;description=Every+request+carries+your+lab%27s+key.\u0026amp;theme=f47a4baf5062f0becca13fd9\u0026amp;signature=9ce3b537cc573404e7c79212c09f5df3b2abdcbaac2ad06327d486021dddae87\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/aicmelabs/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"AICME\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#137a61\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.aicmelabs.com/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.aicmelabs.com/#organization\",\"name\":\"AICME\",\"url\":\"https://docs.aicmelabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/aicmelabs/HfQm_2RpMyfR63Aa/logo/light.svg?fit=max\u0026auto=format\u0026n=HfQm_2RpMyfR63Aa\u0026q=85\u0026s=d416acca2155ebedb8f29f6bbbbcb858\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.aicmelabs.com#website\",\"name\":\"AICME\",\"url\":\"https://docs.aicmelabs.com\",\"publisher\":{\"@id\":\"https://docs.aicmelabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.aicmelabs.com/authentication#webpage\",\"url\":\"https://docs.aicmelabs.com/authentication\",\"name\":\"Authentication\",\"description\":\"Every request carries your lab's key.\",\"dateModified\":\"2026-11-02T16:26:21.465Z\",\"isPartOf\":{\"@id\":\"https://docs.aicmelabs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.aicmelabs.com/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.aicmelabs.com/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"AICME\",\"item\":\"https://docs.aicmelabs.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication\",\"item\":\"https://docs.aicmelabs.com/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.aicmelabs.com/authentication#article\",\"headline\":\"Authentication\",\"name\":\"Authentication\",\"description\":\"Every request carries your lab's key.\",\"url\":\"https://docs.aicmelabs.com/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.aicmelabs.com/authentication#webpage\"},\"dateModified\":\"2026-11-02T16:26:21.465Z\",\"publisher\":{\"@id\":\"https://docs.aicmelabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.aicmelabs.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"AICME\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"AICME","nav":{"global":null,"tabs":[{"tab":"Guides","groups":[{"group":"Get started","pages":[{"title":"Introduction","href":""},{"title":"Quickstart","description":"Download a task, send an answer and read your first reward","href":"/quickstart"}]},{"group":"Concepts","pages":[{"title":"Authentication","href":"/authentication"},{"title":"Tasks and packages","description":"What a task's package holds, and how to run it with Harbor","href":"/packages"},{"title":"Rewards","href":"/rewards"},{"title":"Errors","href":"/errors"},{"title":"Limits","href":"/limits"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/score-an-answer"}]}]},"basePath":"","title":"Authentication - AICME","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}