How to get Twitch clip
GET request to /v1/twitch/clip with your input. You get clean JSON back in seconds for 1 credit per call — no OAuth, scraping or platform SDKs. Twitch clip — curator vs channel, signedVideoUrl, unwrapped token, relatedClips (1 credit).How to get Twitch clip (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the Twitch Clip API
Send an authenticated GET request to /v1/twitch/clip with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/twitch/clip?url=https%3A%2F%2Fwww.twitch.tv%2Fxqc%2Fclip%2FEnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"platform": "twitch",
"id": "3052590127",
"slug": "EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4",
"url": "https://www.twitch.tv/xqc/clip/EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4",
"embedUrl": "https://clips.twitch.tv/embed?clip=EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4",
"title": "the word",
"createdAt": "2026-07-12T23:00:58Z",
"durationSeconds": 44,
"views": 31603,
"thumbnail": "https://static-cdn.jtvnw.net/twitch-video-assets/twitch-vap-video-assets-prod-us-west-2/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/thumb/thumb-0000000000-1920x1080.jpg",
"videoUrl": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/1080/index.mp4",
"videoQualities": [
{
"quality": "1080",
"frameRate": 60,
"url": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/1080/index.mp4"
},
{
"quality": "720",
"frameRate": 60.02308654785156,
"url": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/720/index.mp4"
}
],
"language": "EN",
"isFeatured": false,
"isPublished": true,
"videoOffsetSeconds": 1677,
"game": "Just Chatting",
"gameId": "509658",
"gameSlug": "just-chatting",
"gameBoxArtUrl": "https://static-cdn.jtvnw.net/ttv-boxart/509658-285x380.jpg",
"broadcaster": "xqc",
"broadcasterProfileImage": "https://static-cdn.jtvnw.net/jtv_user_pictures/xqc-profile_image-9298dca608632101-150x150.jpeg",
"channel": {
"id": "71092938",
"username": "xqc",
"name": "xQc",
"url": "https://www.twitch.tv/xqc",
"profileImage": "https://static-cdn.jtvnw.net/jtv_user_pictures/xqc-profile_image-9298dca608632101-150x150.jpeg",
"followers": 12531017,
"isPartner": true,
"lastBroadcast": {
"startedAt": "2026-08-02T06:29:57.736501Z",
"title": "🧑🌾LIVE🧑🌾HERE🧑🌾LOCK IN🧑🌾DRAMA🧑🌾NEWS🧑🌾VIDEOSV🧑🌾REACTS🧑🌾TRHNIGS🧑🌾GAMES🧑🌾VIDEOGAMES🧑🌾MAYBE EVEN THINGS AND SUCH"
}
},
"curator": {
"id": "768198835",
"username": "puertoricanporo",
"name": "puertoricanporo",
"url": "https://www.twitch.tv/puertoricanporo",
"profileImage": "https://static-cdn.jtvnw.net/jtv_user_pictures/15b6d728-aa8b-47be-a3a3-6474f3bea71e-profile_image-150x150.png"
},
"playbackAccessToken": {
"signature": "717a7cc45782d584804989cd3b629ae9bdd25364",
"value": "{\"authorization\":{\"forbidden\":false,\"reason\":\"\"},\"clip_uri\":\"https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/720/index.mp4\",\"clip_slug\":\"EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4\",\"device_id\":\"2f4b8c922ff447c6a2667b75c9a2ff30\",\"expires\":1785766190,\"user_id\":\"\",\"version\":3}",
"expires": 1785766190,
"expiresAt": "2026-08-03T14:09:50Z"
}
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Twitch clip URL, channel URL, or username. 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. |
| cache | boolean | No | Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control. Envelope includes cached + cachedAt on hits. |
| cacheMaxAge | string | No | Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL (SC cache_max_age). Envelope: cached + cachedAt. |
Frequently asked questions
What does the Twitch Clip API do?
The Twitch Clip API lets you fetch full metadata and key stats from a public Twitch clip using one GET request to /v1/twitch/clip. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Twitch Clip API cost?
Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Twitch API key or OAuth?
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Is the Twitch Clip API suitable for production use?
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to get Twitch clip?
Start free with 100 credits — no credit card required.
Get your free API key