Twitch · Guide

How to get Twitch clip

TL;DR
To get Twitch clip, sign up for a free Captapi key, then send one 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. 1

    Get a free API key

    Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.

  2. 2

    Call the Twitch Clip API

    Send an authenticated GET request to /v1/twitch/clip with your input. No OAuth, no scraping setup.

  3. 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": 31747,
    "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",
    "signedVideoUrl": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/1080/index.mp4?sig=9902191e0b3125657995296cbba4f83b41dd920e&token=%7B%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22clip_uri%22%3A%22https%3A%2F%2Fd1ndex63qxojbr.cloudfront.net%2Fnauth%2Fa952a6bb-ad94-4889-8ac1-6afadf21d338%2Flandscape%2Fh264%2F720%2Findex.mp4%22%2C%22clip_slug%22%3A%22EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4%22%2C%22device_id%22%3A%222de496b19fa54321aae2acec1f64aeb6%22%2C%22expires%22%3A1786947372%2C%22user_id%22%3A%22%22%2C%22version%22%3A3%7D",
    "videoQualities": [
      {
        "quality": "1080",
        "frameRate": 60,
        "url": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/1080/index.mp4",
        "signedUrl": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/1080/index.mp4?sig=9902191e0b3125657995296cbba4f83b41dd920e&token=%7B%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22clip_uri%22%3A%22https%3A%2F%2Fd1ndex63qxojbr.cloudfront.net%2Fnauth%2Fa952a6bb-ad94-4889-8ac1-6afadf21d338%2Flandscape%2Fh264%2F720%2Findex.mp4%22%2C%22clip_slug%22%3A%22EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4%22%2C%22device_id%22%3A%222de496b19fa54321aae2acec1f64aeb6%22%2C%22expires%22%3A1786947372%2C%22user_id%22%3A%22%22%2C%22version%22%3A3%7D"
      },
      {
        "quality": "720",
        "frameRate": 60.02,
        "url": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/720/index.mp4",
        "signedUrl": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/720/index.mp4?sig=9902191e0b3125657995296cbba4f83b41dd920e&token=%7B%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22clip_uri%22%3A%22https%3A%2F%2Fd1ndex63qxojbr.cloudfront.net%2Fnauth%2Fa952a6bb-ad94-4889-8ac1-6afadf21d338%2Flandscape%2Fh264%2F720%2Findex.mp4%22%2C%22clip_slug%22%3A%22EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4%22%2C%22device_id%22%3A%222de496b19fa54321aae2acec1f64aeb6%22%2C%22expires%22%3A1786947372%2C%22user_id%22%3A%22%22%2C%22version%22%3A3%7D"
      }
    ],
    "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",
    "channel": {
      "id": "71092938",
      "handle": "xqc",
      "displayName": "xQc",
      "url": "https://www.twitch.tv/xqc",
      "avatar": "https://static-cdn.jtvnw.net/jtv_user_pictures/xqc-profile_image-9298dca608632101-150x150.jpeg",
      "followers": 12535517,
      "isPartner": true,
      "lastBroadcast": {
        "startedAt": "2026-08-15T08:25:40.687536Z",
        "title": "🧀LIVE🧀HERE🧀LOCKIN🧀DRAMA🧀NEWS🧀VIDEOS🧀GAMES🧀REACTS🧀THINGS🧀"
      }
    },
    "curator": {
      "id": "768198835",
      "handle": "puertoricanporo",
      "displayName": "puertoricanporo",
      "url": "https://www.twitch.tv/puertoricanporo",
      "avatar": "https://static-cdn.jtvnw.net/jtv_user_pictures/15b6d728-aa8b-47be-a3a3-6474f3bea71e-profile_image-150x150.png"
    },
    "playbackAccessToken": {
      "signature": "9902191e0b3125657995296cbba4f83b41dd920e",
      "expires": 1786947372,
      "expiresAt": "2026-08-17T06:16:12Z",
      "clipUri": "https://d1ndex63qxojbr.cloudfront.net/nauth/a952a6bb-ad94-4889-8ac1-6afadf21d338/landscape/h264/720/index.mp4",
      "clipSlug": "EnergeticEmpathicElephantJKanStyle-0sOlvgAod9mDhCw4",
      "deviceId": "2de496b19fa54321aae2acec1f64aeb6",
      "version": 3,
      "authorization": {
        "forbidden": false
      }
    },
    "relatedClips": [
      {
        "id": "3942697259",
        "slug": "DeliciousDelightfulPicklesWOOP",
        "url": "https://www.twitch.tv/xqc/clip/DeliciousDelightfulPicklesWOOP",
        "title": "xqc makes the wrong choice",
        "createdAt": "2020-12-09T19:18:10Z",
        "views": 949606,
        "durationSeconds": 44,
        "language": "en",
        "thumbnail": "https://static-cdn.jtvnw.net/twitch-video-assets/twitch-vap-video-assets-prod-us-west-2/ce4b4ef1-4e8d-4391-bff6-2bc4c5506a4d/landscape/thumb/thumb-0000000000-1920x1080.jpg"
      },
      {
        "id": "379398706",
        "slug": "NimbleProductiveAsparagusHeyGuys-s77ZvN10Yr-O2sfo",
        "url": "https://www.twitch.tv/xqc/clip/NimbleProductiveAsparagusHeyGuys-s77ZvN10Yr-O2sfo",
        "title": "wow",
        "createdAt": "2021-04-04T21:34:33Z",
        "views": 776873,
        "durationSeconds": 26,
        "language": "en",
        "thumbnail": "https://static-cdn.jtvnw.net/twitch-video-assets/twitch-vap-video-assets-prod-us-west-2/b0181c83-be87-4dab-ad46-15dde4d81647/landscape/thumb/thumb-0000000000-1920x1080.jpg"
      }
    ]
  }
}

Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.

Request parameters

NameTypeRequiredDescription
urlstring YesTwitch 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.
cachebooleanNoSet true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control.
cacheMaxAgestringNoMax age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL.

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. 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.

Can I pass a channel URL?

No — that is a 400, not a 16-second 404. Use clips.twitch.tv/<slug> or twitch.tv/<channel>/clip/<slug>. Channel URLs belong on /twitch/profile.

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. 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