Start with video details, then request only the deeper datasets your workflow needs.
GET /v1/videos/{id}?provider=youtube — core metadata
GET /v1/videos/{id}/tracks?provider=youtube — available transcript tracks
GET /v1/videos/{id}/transcript?provider=youtube&format=text|segments|words — compact text, timed segments, or timed words; omitting format preserves the rich words response
GET /v1/videos/{id}/comments?provider=youtube — paginated public comments
GET /v1/videos/{id}/endscreen?provider=youtube — end-screen links
The default comments request returns YouTube’s default-ranked page. Add all=true for up to five newest-first pages, about 100 comments. A crawl that reaches that limit returns what it collected with meta.partial: true and a warning, so inspect meta.partial and meta.warnings before treating it as complete. To read further, page with continuation; each page is a separate request.Video metadata lookups retry explicit YouTube bot challenges, with up to three processor attempts within one 120-second extraction budget. Transient errors use exponential backoff with jitter and honor upstream Retry-After. Retries visit the other processor before revisiting a slot. Recently challenged processors are deprioritized for 30 seconds within the same runtime isolate; this is a best-effort hint, not a global health guarantee. Switching processors does not guarantee a different outbound IP. Bot challenges are not cached as successful metadata and do not establish that a video is private or unavailable. If refresh fails and previously successful metadata exists, the response retains that data with freshness.state: "stale", its original freshness.fetchedAt timestamp in milliseconds, and freshness.reason: "UPSTREAM_UNAVAILABLE". Treat view counts as observations from that time. If no usable cached metadata exists, the lookup returns HTTP 503 with error code UNAVAILABLE. Genuine private and age-restricted video responses keep their availability metadata. A transcript can be requested directly without first fetching video metadata. The dashboard loads transcripts and metadata independently, renders each as it arrives, and preserves successful data when another request fails.
Use a YouTube channel ID (UC followed by 22 letters, digits, underscores, or hyphens) or a handle with its leading @, such as @AltShiftX. A bare name such as AltShiftX returns HTTP 422 with code INVALID_ID and a message explaining the accepted formats. Validation runs before any credit reservation or provider request. The same rule applies to channel details, videos, and playlists.
GET /v1/channels/@AltShiftX?provider=youtube
GET /v1/channels/{id}?provider=youtube — profile, public totals, links, and metadata
GET /v1/channels/{id}/videos?provider=youtube — paginated video catalog
GET /v1/channels/{id}/playlists?provider=youtube — paginated playlist catalog
GET /v1/playlists/{id}?provider=youtube returns playlist metadata and its paginated video index. Fetching a playlist does not automatically fetch transcripts or comments for every video.
IDs, handles, and supported YouTube URLs are normalized by the provider pipeline, but hosted API path parameters should use the resource ID returned by discovery whenever possible.
{"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.4117","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":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/entities","slug":"/api/entities","pageMetadata":{"title":"Videos, channels, and playlists","description":"Retrieve normalized provider resources and their related data.","href":"/api/entities"},"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: \"Retrieve normalized provider resources and their related data.\"\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,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`videos`,children:`Videos`}),`\n`,_jsx(_components.p,{children:`Start with video details, then request only the deeper datasets your workflow needs.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/videos/{id}?provider=youtube`}),` — core metadata`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/videos/{id}/tracks?provider=youtube`}),` — available transcript tracks`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/videos/{id}/transcript?provider=youtube\u0026format=text|segments|words`}),` — compact text, timed segments, or timed words; omitting `,_jsx(_components.code,{children:`format`}),` preserves the rich words response`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/videos/{id}/comments?provider=youtube`}),` — paginated public comments`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/videos/{id}/endscreen?provider=youtube`}),` — end-screen links`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The default comments request returns YouTube’s default-ranked page. Add `,_jsx(_components.code,{children:`all=true`}),` for up to five newest-first pages, about 100 comments. A crawl that reaches that limit returns what it collected with `,_jsx(_components.code,{children:`meta.partial: true`}),` and a warning, so inspect `,_jsx(_components.code,{children:`meta.partial`}),` and `,_jsx(_components.code,{children:`meta.warnings`}),` before treating it as complete. To read further, page with `,_jsx(_components.code,{children:`continuation`}),`; each page is a separate request.`]}),`\n`,_jsxs(_components.p,{children:[`Video metadata lookups retry explicit YouTube bot challenges, with up to three processor attempts within one 120-second extraction budget. Transient errors use exponential backoff with jitter and honor upstream `,_jsx(_components.code,{children:`Retry-After`}),`. Retries visit the other processor before revisiting a slot. Recently challenged processors are deprioritized for 30 seconds within the same runtime isolate; this is a best-effort hint, not a global health guarantee. Switching processors does not guarantee a different outbound IP. Bot challenges are not cached as successful metadata and do not establish that a video is private or unavailable. If refresh fails and previously successful metadata exists, the response retains that data with `,_jsx(_components.code,{children:`freshness.state: \"stale\"`}),`, its original `,_jsx(_components.code,{children:`freshness.fetchedAt`}),` timestamp in milliseconds, and `,_jsx(_components.code,{children:`freshness.reason: \"UPSTREAM_UNAVAILABLE\"`}),`. Treat view counts as observations from that time. If no usable cached metadata exists, the lookup returns HTTP 503 with error code `,_jsx(_components.code,{children:`UNAVAILABLE`}),`. Genuine private and age-restricted video responses keep their availability metadata. A transcript can be requested directly without first fetching video metadata. The dashboard loads transcripts and metadata independently, renders each as it arrives, and preserves successful data when another request fails.`]}),`\n`,_jsx(Heading,{level:`2`,id:`channels`,children:`Channels`}),`\n`,_jsxs(_components.p,{children:[`Use a YouTube channel ID (`,_jsx(_components.code,{children:`UC`}),` followed by 22 letters, digits, underscores, or hyphens) or a handle with its leading `,_jsx(_components.code,{children:`@`}),`, such as `,_jsx(_components.code,{children:`@AltShiftX`}),`. A bare name such as `,_jsx(_components.code,{children:`AltShiftX`}),` returns HTTP `,_jsx(_components.code,{children:`422`}),` with code `,_jsx(_components.code,{children:`INVALID_ID`}),` and a message explaining the accepted formats. Validation runs before any credit reservation or provider request. The same rule applies to channel details, videos, and playlists.`]}),`\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:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`GET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` /v1/channels/@AltShiftX?provider=youtube`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/channels/{id}?provider=youtube`}),` — profile, public totals, links, and metadata`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/channels/{id}/videos?provider=youtube`}),` — paginated video catalog`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`GET /v1/channels/{id}/playlists?provider=youtube`}),` — paginated playlist catalog`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`playlists`,children:`Playlists`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`GET /v1/playlists/{id}?provider=youtube`}),` returns playlist metadata and its paginated video index. Fetching a playlist does not automatically fetch transcripts or comments for every video.`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`IDs, handles, and supported YouTube URLs are normalized by the provider pipeline, but hosted API path parameters should use the resource ID returned by discovery whenever possible.`})})]})}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":"Videos, channels, and playlists","description":"Retrieve normalized provider resources and their related data.","href":"/api/entities"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Videos","slug":"videos","depth":2,"children":[]},{"title":"Channels","slug":"channels","depth":2,"children":[]},{"title":"Playlists","slug":"playlists","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"video2ctx","siteName":"video2ctx","title":"Videos, channels, and playlists - video2ctx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-03T01:30:21.393Z","originalFileLocation":"api/entities.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=\"Retrieve normalized provider resources and their related data.\">\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=\"Videos, channels, and playlists - video2ctx\">\u003cmeta data-mint-head property=\"og:description\" content=\"Retrieve normalized provider resources and their related data.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"video2ctx\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.video2ctx.dev/api/entities\">\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=Videos%2C+channels%2C+and+playlists\u0026amp;description=Retrieve+normalized+provider+resources+and+their+related+data.\u0026amp;theme=1a90da152731d42ef07b77a2\u0026amp;signature=5bc4312ee68f7b5e81ec923ca0eb449bb68fecac91ea5ad85a0fd7737de908ce\">\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=\"Videos, channels, and playlists - video2ctx\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Retrieve normalized provider resources and their related data.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://video2ctx.mintlify.site/_mintlify/api/og/v2?division=Build+with+API\u0026amp;title=Videos%2C+channels%2C+and+playlists\u0026amp;description=Retrieve+normalized+provider+resources+and+their+related+data.\u0026amp;theme=1a90da152731d42ef07b77a2\u0026amp;signature=5bc4312ee68f7b5e81ec923ca0eb449bb68fecac91ea5ad85a0fd7737de908ce\">\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/entities\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/entities.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/entities#webpage\",\"url\":\"https://docs.video2ctx.dev/api/entities\",\"name\":\"Videos, channels, and playlists\",\"description\":\"Retrieve normalized provider resources and their related data.\",\"dateModified\":\"2026-10-03T01:30:21.393Z\",\"isPartOf\":{\"@id\":\"https://docs.video2ctx.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.video2ctx.dev/api/entities#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.video2ctx.dev/api/entities#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Build with API\",\"item\":\"https://docs.video2ctx.dev/api\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Videos, channels, and playlists\",\"item\":\"https://docs.video2ctx.dev/api/entities\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.video2ctx.dev/api/entities#article\",\"headline\":\"Videos, channels, and playlists\",\"name\":\"Videos, channels, and playlists\",\"description\":\"Retrieve normalized provider resources and their related data.\",\"url\":\"https://docs.video2ctx.dev/api/entities\",\"mainEntityOfPage\":{\"@id\":\"https://docs.video2ctx.dev/api/entities#webpage\"},\"dateModified\":\"2026-10-03T01:30:21.393Z\",\"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/entities.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","href":"/api/quickstart"},{"title":"Authentication","href":"/api/authentication"},{"title":"API conventions","href":"/api/conventions"},{"title":"Credits","href":"/api/credits"},{"title":"Discovery","description":"Search, browse, and resolve input.","href":"/api/discovery"},{"title":"Videos, channels, and playlists","href":"/api/entities"},{"title":"Projects and research","description":"Store sources, search indexed evidence, and export project material.","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":"Videos, channels, and playlists - video2ctx","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}