The hosted video2ctx skills use the public CLI package. Install it once, then start device authorization:
npm i -g @video2ctx/clivideo2ctx auth login
The command opens video2ctx.dev and displays a short code. Sign in, confirm that the code and account are correct, and approve the device. The CLI stores the resulting revocable session in local user configuration with private file permissions. Check it with video2ctx auth status --json or video2ctx whoami --json, and revoke it with video2ctx auth logout.CLI sessions carry data:read and account:access. They can use provider data, usage, monitors, and notifications. API-key management, billing, connected-account changes, account deletion, and administration remain browser-session-only.
For unattended server-to-server applications, create a personal key and use the standard Authorization header:
Authorization: Bearer aty_…
X-API-Key remains available for compatibility, but bearer authentication is preferred. Browser sessions, CLI sessions, and API keys share the same account and credit ledger.
Personal API keys can access normal user-owned data, projects, imports, exports, monitors, notifications, and usage. The published agent skills intentionally expose a narrower surface; the public OpenAPI contract remains the source of truth for each route’s accepted credential type.Project search requires both data:read and account:access permissions. The authenticated user must also own the project.
Keep keys in server-side secrets or environment variables.
Never embed a key in a public web bundle or mobile application.
Use separate keys for separate integrations so one can be revoked independently.
Revoke a key immediately if it appears in logs, screenshots, source control, or support messages.
Never paste a CLI session or API key into an agent prompt. Local demo identities are development-only; production rejects the X-Demo-User header.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"video2ctx","description":"Turn videos into useful context for people, applications, and AI agents.","colors":{"primary":"#c83b30","light":"#f45d4f","dark":"#c83b30"},"logo":{"light":"https://mintcdn.com/video2ctx/oVItuJlvJaZVlvdk/logo/light.svg?fit=max\u0026auto=format\u0026n=oVItuJlvJaZVlvdk\u0026q=85\u0026s=67e12859318ddbe8253aaa9606e03c4c","dark":"https://mintcdn.com/video2ctx/oVItuJlvJaZVlvdk/logo/dark.svg?fit=max\u0026auto=format\u0026n=oVItuJlvJaZVlvdk\u0026q=85\u0026s=4cb973a13fcd2a06fc4153af330f720b"},"favicon":"https://mintcdn.com/video2ctx/oVItuJlvJaZVlvdk/favicon.png?fit=max\u0026auto=format\u0026n=oVItuJlvJaZVlvdk\u0026q=85\u0026s=e7f7ea7c681665abbcbc0edb39aa5c14","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["bash","javascript","python"],"prefill":true,"autogenerate":true}},"navbar":{"links":[{"href":"/api-reference/introduction","label":"API reference"},{"href":"mailto:support@video2ctx.dev","label":"Support"}],"primary":{"type":"button","label":"Open dashboard","href":"https://video2ctx.dev/dashboard"}},"footer":{"socials":{"github":"https://github.com/devhims/video2ctx"}},"seo":{"metatags":{"canonical":"https://docs.video2ctx.dev"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/devhims/video2ctx"},{"anchor":"API status","icon":"signal-stream","href":"https://api.video2ctx.dev/health"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"video2ctx","hasAudioNarration":false,"actualSubdomain":"video2ctx","customDomains":["docs.video2ctx.dev"],"gitSource":{"type":"github","owner":"devhims","repo":"video2ctx","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeffb1c69e61846fb391692","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API reference","count":51},{"language":"default","tag":"Endpoints","count":50},{"language":"default","tag":"Agents","count":12},{"language":"default","tag":"Build with API","count":10},{"language":"default","tag":"Dashboard","count":8},{"language":"default","tag":"Monitoring","count":8},{"language":"default","tag":"Projects","count":5},{"language":"default","tag":"Videos","count":5},{"language":"default","tag":"Build with Agents","count":4},{"language":"default","tag":"Open source","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/authentication","slug":"/api/authentication","pageMetadata":{"title":"Authentication","description":"Authenticate hosted requests with a CLI session or personal key.","href":"/api/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: \"Authenticate hosted requests with a CLI session or personal 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`,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(Heading,{level:`2`,id:`agent-and-cli-access`,children:`Agent and CLI access`}),`\n`,_jsx(_components.p,{children:`The hosted video2ctx skills use the public CLI package. Install it once, then start device authorization:`}),`\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:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` i`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -g`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @video2ctx/cli`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`video2ctx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` auth`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The command opens `,_jsx(_components.code,{children:`video2ctx.dev`}),` and displays a short code. Sign in, confirm that the code and account are correct, and approve the device. The CLI stores the resulting revocable session in local user configuration with private file permissions. Check it with `,_jsx(_components.code,{children:`video2ctx auth status --json`}),` or `,_jsx(_components.code,{children:`video2ctx whoami --json`}),`, and revoke it with `,_jsx(_components.code,{children:`video2ctx auth logout`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`CLI sessions carry `,_jsx(_components.code,{children:`data:read`}),` and `,_jsx(_components.code,{children:`account:access`}),`. They can use provider data, usage, monitors, and notifications. API-key management, billing, connected-account changes, account deletion, and administration remain browser-session-only.`]}),`\n`,_jsx(Heading,{level:`2`,id:`personal-api-keys`,children:`Personal API keys`}),`\n`,_jsxs(_components.p,{children:[`For unattended server-to-server applications, create a personal key and use the standard `,_jsx(_components.code,{children:`Authorization`}),` header:`]}),`\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 aty_…`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`X-API-Key`}),` remains available for compatibility, but bearer authentication is preferred. Browser sessions, CLI sessions, and API keys share the same account and credit ledger.`]}),`\n`,_jsx(Heading,{level:`2`,id:`permissions`,children:`Permissions`}),`\n`,_jsx(_components.p,{children:`Personal API keys can access normal user-owned data, projects, imports, exports, monitors, notifications, and usage. The published agent skills intentionally expose a narrower surface; the public OpenAPI contract remains the source of truth for each route’s accepted credential type.`}),`\n`,_jsxs(_components.p,{children:[`Project search requires both `,_jsx(_components.code,{children:`data:read`}),` and `,_jsx(_components.code,{children:`account:access`}),` permissions. The authenticated user must also own the project.`]}),`\n`,_jsx(Heading,{level:`2`,id:`key-safety`,children:`Key safety`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Keep keys in server-side secrets or environment variables.`}),`\n`,_jsx(_components.li,{children:`Never embed a key in a public web bundle or mobile application.`}),`\n`,_jsx(_components.li,{children:`Use separate keys for separate integrations so one can be revoked independently.`}),`\n`,_jsx(_components.li,{children:`Revoke a key immediately if it appears in logs, screenshots, source control, or support messages.`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Never paste a CLI session or API key into an agent prompt. Local demo identities are development-only; production rejects the `,_jsx(_components.code,{children:`X-Demo-User`}),` header.`]})})]})}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":"Authenticate hosted requests with a CLI session or personal key.","href":"/api/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Agent and CLI access","slug":"agent-and-cli-access","depth":2,"children":[]},{"title":"Personal API keys","slug":"personal-api-keys","depth":2,"children":[]},{"title":"Permissions","slug":"permissions","depth":2,"children":[]},{"title":"Key safety","slug":"key-safety","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"video2ctx","siteName":"video2ctx","title":"Authentication - video2ctx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-03T01:05:22.662Z","originalFileLocation":"api/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=\"Authenticate hosted requests with a CLI session or personal key.\">\u003cmeta data-mint-head name=\"application-name\" content=\"video2ctx\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/video2ctx/AFWBTaEFZxyvXT1o/_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/video2ctx/AFWBTaEFZxyvXT1o/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/video2ctx/AFWBTaEFZxyvXT1o/_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/video2ctx/AFWBTaEFZxyvXT1o/_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/video2ctx/AFWBTaEFZxyvXT1o/_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/video2ctx/AFWBTaEFZxyvXT1o/_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/video2ctx/AFWBTaEFZxyvXT1o/_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/video2ctx/AFWBTaEFZxyvXT1o/_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/video2ctx/AFWBTaEFZxyvXT1o/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authentication - video2ctx\">\u003cmeta data-mint-head property=\"og:description\" content=\"Authenticate hosted requests with a CLI session or personal key.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"video2ctx\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.video2ctx.dev/api/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://video2ctx.mintlify.site/_mintlify/api/og/v2?division=Build+with+API\u0026amp;title=Authentication\u0026amp;description=Authenticate+hosted+requests+with+a+CLI+session+or+personal+key.\u0026amp;theme=1a90da152731d42ef07b77a2\u0026amp;signature=6849845d341708768fa5518a96a4bc56a03a76b0987ddd6686354b8c5058ea80\">\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 - video2ctx\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Authenticate hosted requests with a CLI session or personal key.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://video2ctx.mintlify.site/_mintlify/api/og/v2?division=Build+with+API\u0026amp;title=Authentication\u0026amp;description=Authenticate+hosted+requests+with+a+CLI+session+or+personal+key.\u0026amp;theme=1a90da152731d42ef07b77a2\u0026amp;signature=6849845d341708768fa5518a96a4bc56a03a76b0987ddd6686354b8c5058ea80\">\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/video2ctx/AFWBTaEFZxyvXT1o/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"video2ctx\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#c83b30\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.video2ctx.dev/api/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.video2ctx.dev/#organization\",\"name\":\"video2ctx\",\"url\":\"https://docs.video2ctx.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/video2ctx/oVItuJlvJaZVlvdk/logo/light.svg?fit=max\u0026auto=format\u0026n=oVItuJlvJaZVlvdk\u0026q=85\u0026s=67e12859318ddbe8253aaa9606e03c4c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.video2ctx.dev#website\",\"name\":\"video2ctx\",\"url\":\"https://docs.video2ctx.dev\",\"publisher\":{\"@id\":\"https://docs.video2ctx.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.video2ctx.dev/api/authentication#webpage\",\"url\":\"https://docs.video2ctx.dev/api/authentication\",\"name\":\"Authentication\",\"description\":\"Authenticate hosted requests with a CLI session or personal key.\",\"dateModified\":\"2026-10-03T01:05:22.662Z\",\"isPartOf\":{\"@id\":\"https://docs.video2ctx.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.video2ctx.dev/api/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.video2ctx.dev/api/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Build with API\",\"item\":\"https://docs.video2ctx.dev/api\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication\",\"item\":\"https://docs.video2ctx.dev/api/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.video2ctx.dev/api/authentication#article\",\"headline\":\"Authentication\",\"name\":\"Authentication\",\"description\":\"Authenticate hosted requests with a CLI session or personal key.\",\"url\":\"https://docs.video2ctx.dev/api/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.video2ctx.dev/api/authentication#webpage\"},\"dateModified\":\"2026-10-03T01:05:22.662Z\",\"publisher\":{\"@id\":\"https://docs.video2ctx.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.video2ctx.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"video2ctx\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"video2ctx\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api/authentication.md","siteName":"video2ctx","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/devhims/video2ctx"},{"anchor":"API status","icon":"signal-stream","href":"https://api.video2ctx.dev/health"}]},"pages":[{"group":"Start here","pages":[{"title":"Video context for agents and builders","href":"/index"}]},{"group":"Dashboard","pages":[{"title":"Use the Dashboard","href":"/dashboard"},{"title":"Dashboard quickstart","href":"/dashboard/getting-started"},{"title":"Sources, videos, and playlists","href":"/dashboard/sources"},{"title":"Choose video data","href":"/dashboard/data-options"},{"title":"Projects and saved research","href":"/dashboard/projects"},{"title":"Monitor channels","href":"/dashboard/monitoring"},{"title":"Notifications and email consent","href":"/dashboard/notifications"},{"title":"Account, credits, and API keys","href":"/dashboard/account"}]},{"group":"Build with Agents","pages":[{"title":"Build with Agents","href":"/agents"},{"title":"Install agent skills","href":"/skills/installation"},{"title":"Use YouTube context","href":"/skills/youtube-ctx"},{"title":"Use the hosted platform","href":"/skills/video2ctx-platform"}]},{"group":"Build with API","pages":[{"title":"Build with API","href":"/api"},{"title":"API quickstart","description":"Create a key and retrieve normalized video context.","href":"/api/quickstart"},{"title":"Authentication","href":"/api/authentication"},{"title":"API conventions","description":"Credits, pagination, metadata, caching, and error behavior.","href":"/api/conventions"},{"title":"Credits","href":"/api/credits"},{"title":"Discovery","href":"/api/discovery"},{"title":"Videos, channels, and playlists","href":"/api/entities"},{"title":"Projects and research","href":"/api/research"},{"title":"Monitoring API","href":"/api/monitoring"},{"title":"Node.js library","href":"/api/node-library"}]},{"group":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"},{"group":"Endpoints","pages":[{"group":"System","pages":[{"title":"Get platform information","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /","href":"/api-reference/system/get-platform-information"},{"title":"Check platform health","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /health","href":"/api-reference/system/check-platform-health"},{"title":"Get the OpenAPI document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /openapi.json","href":"/api-reference/system/get-the-openapi-document"},{"title":"Open the Scalar API reference","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /docs","href":"/api-reference/system/open-the-scalar-api-reference"}]},{"group":"Authentication","pages":[{"title":"Start CLI device authorization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/auth/device/code","href":"/api-reference/authentication/start-cli-device-authorization"},{"title":"Poll for an approved CLI session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/auth/device/token","href":"/api-reference/authentication/poll-for-an-approved-cli-session"}]},{"group":"Agents","pages":[{"title":"Start a durable agent run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agent","href":"/api-reference/agents/start-a-durable-agent-run"},{"title":"Check agent access for the authenticated account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/access","href":"/api-reference/agents/check-agent-access-for-the-authenticated-account"},{"title":"List or search agent sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/sessions","href":"/api-reference/agents/list-or-search-agent-sessions"},{"title":"Read an agent session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/sessions/{sessionId}","href":"/api-reference/agents/read-an-agent-session"},{"title":"List session evidence and memory","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/sessions/{sessionId}/assets","href":"/api-reference/agents/list-session-evidence-and-memory"},{"title":"Delete all session evidence and memory","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agent/sessions/{sessionId}/assets","href":"/api-reference/agents/delete-all-session-evidence-and-memory"},{"title":"Read a stored session asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/sessions/{sessionId}/assets/{version}","href":"/api-reference/agents/read-a-stored-session-asset"},{"title":"Delete one evidence version and dependent memory","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agent/sessions/{sessionId}/assets/{version}","href":"/api-reference/agents/delete-one-evidence-version-and-dependent-memory"},{"title":"Forget a session memory entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agent/sessions/{sessionId}/memory/{id}","href":"/api-reference/agents/forget-a-session-memory-entry"},{"title":"Get a durable agent run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/{sessionId}/runs/{runId}","href":"/api-reference/agents/get-a-durable-agent-run"},{"title":"View a saved agent video frame","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/frames/{collectionId}/{assetId}","href":"/api-reference/agents/view-a-saved-agent-video-frame"},{"title":"Watch an agent run and its tool activity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent/{sessionId}/runs/{runId}/events","href":"/api-reference/agents/watch-an-agent-run-and-its-tool-activity"}]},{"group":"Discovery","pages":[{"title":"Search a project’s indexed evidence","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/search","href":"/api-reference/discovery/search-a-project’s-indexed-evidence"},{"title":"Search a video provider","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/search","href":"/api-reference/discovery/search-a-video-provider"},{"title":"Browse a provider discovery feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/browse","href":"/api-reference/discovery/browse-a-provider-discovery-feed"}]},{"group":"Providers","pages":[{"title":"List supported video providers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/providers","href":"/api-reference/providers/list-supported-video-providers"}]},{"group":"Videos","pages":[{"title":"Inspect a video","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/videos/{id}","href":"/api-reference/videos/inspect-a-video"},{"title":"List transcript tracks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/videos/{id}/tracks","href":"/api-reference/videos/list-transcript-tracks"},{"title":"Get a timed transcript","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/videos/{id}/transcript","href":"/api-reference/videos/get-a-timed-transcript"},{"title":"Get video comments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/videos/{id}/comments","href":"/api-reference/videos/get-video-comments"},{"title":"Get endscreen elements","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/videos/{id}/endscreen","href":"/api-reference/videos/get-endscreen-elements"}]},{"group":"Channels","pages":[{"title":"Inspect a channel","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/channels/{id}","href":"/api-reference/channels/inspect-a-channel"},{"title":"List channel videos","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/channels/{id}/videos","href":"/api-reference/channels/list-channel-videos"},{"title":"List channel playlists","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/channels/{id}/playlists","href":"/api-reference/channels/list-channel-playlists"}]},{"group":"Playlists","pages":[{"title":"Inspect a playlist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/playlists/{id}","href":"/api-reference/playlists/inspect-a-playlist"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects","href":"/api-reference/projects/list-projects"},{"title":"Create a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects","href":"/api-reference/projects/create-a-project"},{"title":"Get a project and its saved items","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{id}","href":"/api-reference/projects/get-a-project-and-its-saved-items"},{"title":"Delete a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/projects/{id}","href":"/api-reference/projects/delete-a-project"},{"title":"Save material to a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{id}/items","href":"/api-reference/projects/save-material-to-a-project"}]},{"group":"Research","pages":[{"title":"Start a durable import job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/imports","href":"/api-reference/research/start-a-durable-import-job"},{"title":"Get import job status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/jobs/{id}","href":"/api-reference/research/get-import-job-status"}]},{"group":"Exports","pages":[{"title":"Create a project export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{id}/exports","href":"/api-reference/exports/create-a-project-export"},{"title":"Download an export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/exports/{id}/download","href":"/api-reference/exports/download-an-export"}]},{"group":"Monitoring","pages":[{"title":"List monitors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/monitors","href":"/api-reference/monitoring/list-monitors"},{"title":"Create a monitor","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/monitors","href":"/api-reference/monitoring/create-a-monitor"},{"title":"Delete a monitor","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/monitors/{id}","href":"/api-reference/monitoring/delete-a-monitor"},{"title":"Update a monitor schedule or display metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/monitors/{id}","href":"/api-reference/monitoring/update-a-monitor-schedule-or-display-metadata"},{"title":"List recent notifications","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/notifications","href":"/api-reference/monitoring/list-recent-notifications"},{"title":"Mark a notification as read","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/notifications/{id}/read","href":"/api-reference/monitoring/mark-a-notification-as-read"},{"title":"Get notification preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/notification-preferences","href":"/api-reference/monitoring/get-notification-preferences"},{"title":"Update notification preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/notification-preferences","href":"/api-reference/monitoring/update-notification-preferences"}]},{"group":"Billing","pages":[{"title":"Get plan limits and credit balance","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/usage","href":"/api-reference/billing/get-plan-limits-and-credit-balance"}]},{"group":"Account","pages":[{"title":"Get the authenticated account identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/account","href":"/api-reference/account/get-the-authenticated-account-identity"}]}]}]},{"group":"Platform internals","pages":[{"title":"Platform internals","href":"/internals/overview"},{"title":"Internal endpoint inventory","href":"/internals/endpoints"}]},{"group":"Open source","pages":[{"title":"Local development","href":"/open-source/local-development"},{"title":"Architecture","href":"/open-source/architecture"},{"title":"Deployment","href":"/open-source/deployment"},{"title":"Contributing","href":"/open-source/contributing"}]}]},"basePath":"","title":"Authentication - video2ctx","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}