Twitch Clip API
Twitch clip — curator vs channel, signedVideoUrl, unwrapped token, relatedClips (1 credit).
Pass a Twitch clip URL (clips.twitch.tv/<slug> or twitch.tv/<channel>/clip/<slug>) and get a clean structured object — not Twitch's raw GraphQL envelope. Channel URLs and usernames are 400 (they belong on /twitch/profile) — rejected immediately instead of a slow miss. Includes curator (who cut the clip) separate from channel{id,handle,displayName,url,avatar,followers,isPartner,lastBroadcast}, BCP-47 lowercase language (same as twitch/profile recentVideos), isFeatured/isPublished, videoOffsetSeconds, gameId/gameSlug/gameBoxArtUrl, videoQualities[{quality,frameRate,url,signedUrl}] with frameRate rounded to 2dp, videoUrl (unsigned source) plus signedVideoUrl (?sig=&token= — required for /nauth/ MP4s; unsigned returns 401), playbackAccessToken as parsed fields (signature, expires, expiresAt, clipUri, clipSlug, deviceId, version, authorization — no escaped JSON value string), and relatedClips[] from the same channel. No flat broadcaster / broadcasterProfileImage twins. Accepts cache / cacheMaxAge=1d|3d|7d|14d|30d. Flat 1 credit.
Request
- Base URL: https://api.captapi.com
- URL: https://api.captapi.com/v1/twitch/clip
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Query parameters
Twitch clip URL (clips.twitch.tv/<slug> or twitch.tv/<channel>/clip/<slug>). 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.
Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control.
Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL.
Response
Success. The data object for this endpoint.
Changes
No recorded changes to this operation across all 3 revisions of this API.