Twitch User Videos API
Twitch channel VODs — lean rows, video-id cursor, filter/sort, top-level broadcaster{} (flat 2).
Pass a Twitch channel URL or username and get a clean videos[] list (not a profile dump). Each row: id, url, embedUrl, title, createdAt, durationSeconds, views, thumbnail (320x180 — {width}x{height} substituted; thumbnailTemplate kept), animatedPreviewUrl, broadcastType, game (+ gameId/gameSlug/box art), lowercase language. Channel identity is once at the top as broadcaster{id,handle,displayName,url,avatar,followers,isPartner,isAffiliate} — videos[] do not repeat channel{}/broadcaster/broadcasterProfileImage. The same lean row shape is used on profile.recentVideos[]. filterBy=ARCHIVE|HIGHLIGHT|UPLOAD (omit for all types — no default filter; an unset filterBy is omitted, not null). sortBy=TIME|VIEWS. nextCursor is the last video id on the page (stable within the window — not a raw offset). Hard ceiling: first 100 matching videos (windowMax=100); Twitch anonymous GQL rejects after-cursors with IntegrityCheckFailed, so deeper history is not available. Flat 2 credits per call.
Request
- Base URL: https://api.captapi.com
- URL: https://api.captapi.com/v1/twitch/user-videos
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Query parameters
Twitch channel URL or username, e.g. https://www.twitch.tv/shroud. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble.
Max items to return (default 20, max 100). Flat 2 credits per call. Hard ceiling: first 100 matching videos only — deeper history is not available (windowMax=100).
ARCHIVE | HIGHLIGHT | UPLOAD. Omit for all types — there is no default filter (unset filterBy is omitted, not null).
TIME (default, newest first) or VIEWS.
Pagination cursor = last video id from the previous nextCursor. Leave empty for the first page. Pages the first 100 matching videos only (not a raw offset).
Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.
Response
Success. The data object for this endpoint.
Changes
No recorded changes to this operation across all 3 revisions of this API.