Videos
Start with video details, then request only the deeper datasets your workflow needs.
GET /v1/providers/youtube/videos/{id} — core metadata
GET /v1/providers/youtube/videos/{id}/tracks — available transcript tracks
GET /v1/providers/youtube/videos/{id}/transcript?format=text|segments|words — compact text, timed segments, or timed words; omitting format preserves the rich words response
GET /v1/providers/youtube/videos/{id}/comments — paginated public comments
GET /v1/providers/youtube/videos/{id}/endscreen — end-screen links
The default comments request returns YouTube’s default-ranked page. Add all=true for a bounded newest-first collection, then inspect meta.partial and meta.warnings before treating it as complete.
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.
Channels
GET /v1/providers/youtube/channels/{id} — profile, public totals, links, and metadata
GET /v1/providers/youtube/channels/{id}/videos — paginated video catalog
GET /v1/providers/youtube/channels/{id}/playlists — paginated playlist catalog
Playlists
GET /v1/providers/youtube/playlists/{id} 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.