Kick
GET /v1/kick/clip

Kick Clip API

Get a Kick clip — creator vs channel, HLS playback, VOD deep-link, views, and duration as structured JSON.

1 credit per request
TL;DR
Get a Kick clip — creator vs channel, HLS playback, VOD deep-link, views, and duration as structured JSON. The Kick Clip API (Kick) is a single authenticated GET request to /v1/kick/clip that responds with clean JSON and costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.

What is the Kick Clip API?

Two modes. Clip URL → {channelUrl, clip} with creator (who cut the clip) separate from channel (broadcaster), privacy, isMature, startedAt, livestreamId, vod{id,url,urlWithOffset}, vodStartsAt, and categorySlug/parentCategory. Playback is HLS: videoType is "hls", videoUrl/hlsUrl are the .m3u8 playlist (not a progressive MP4 — download that URL and you get a text manifest). Channel URL/@username → {channelUrl, totalReturned, clips[]} only — no top-level clip and no cursor (Kick's channel clips list is a single page; use limit, default 30, max 100). Session-only liked is omitted. Accepts cache / cacheMaxAge. Flat 1 credit on the native path.

Try it

Open in Playground

Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).

Parameters

Sign in to run live
curl "https://api.captapi.com/v1/kick/clip?url=https%3A%2F%2Fkick.com%2Fxqc%2Fclips%2Fclip_01KZ0X5PGT228PY3QEB3RMR3YC" \
  -H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."

Edit the parameters and the code updates instantly. Switch languages and hit copy.

Example response

{
  "success": true,
  "data": {
    "channelUrl": "https://kick.com/xqc",
    "clip": {
      "platform": "kick",
      "id": "clip_01KZ0X5PGT228PY3QEB3RMR3YC",
      "url": "https://kick.com/xqc/clips/clip_01KZ0X5PGT228PY3QEB3RMR3YC",
      "title": "Vegas farming sadges",
      "createdAt": "2026-08-02T09:36:01.061092Z",
      "startedAt": "2026-08-02T05:45:57Z",
      "durationSeconds": 38,
      "views": 18,
      "likes": 0,
      "thumbnailUrl": "https://clips.kick.com/clips/fb/clip_01KZ0X5PGT228PY3QEB3RMR3YC/thumbnail.webp",
      "videoUrl": "https://clips.kick.com/clips/fb/clip_01KZ0X5PGT228PY3QEB3RMR3YC/playlist.m3u8",
      "privacy": "public",
      "isMature": false,
      "livestreamId": "120226226",
      "vodStartsAt": 29450,
      "vod": {
        "id": "8faf0a05-dcdf-4ab1-8538-e87c6eef573e"
      },
      "category": "Just Chatting",
      "categoryId": "15",
      "categorySlug": "just-chatting",
      "parentCategory": "irl",
      "categoryBanner": "https://files.kick.com/images/subcategories/15/banner/b697a8a3-62db-4779-aa76-e4e47662af97",
      "channel": {
        "id": "668",
        "username": "xqc",
        "name": "xQc",
        "url": "https://kick.com/xqc",
        "profilePicture": "https://files.kick.com/images/user/676/profile_image/conversion/931b4e8f-5445-427c-bd82-b473530390cc-thumb.webp"
      },
      "creator": {
        "id": "7458058",
        "username": "ghosteld",
        "name": "Ghosteld",
        "url": "https://kick.com/ghosteld",
        "profilePicture": "https://files.kick.com/images/user/7458058/profile_image/conversion/d0bd5606-ab8a-42f7-b535-6f7c4a672c34-thumb.webp"
      }
    }
  }
}

Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.

Response structure

A successful call returns success, cached, creditsUsed, and a data object with the following fields:

Top-level fields

  • channelUrlCanonical Kick channel URL derived from the request.
  • totalReturnedChannel mode only — number of clips in this response. No nextCursor — Kick's channel clips list is a single page (use limit).

Clip

The clip object contains:

  • platformPlatform identifier for this response (matches the endpoint's platform).
  • idStable platform ID for the item.
  • urlKick clip web page (https://kick.com/{channel}/clips/clip_…). Not the HLS playlist.
  • titleTitle of the item.
  • createdAtCreation date (ISO 8601).
  • startedAtWhen the stream, clip, or broadcast segment started (ISO 8601).
  • durationSecondsLength in seconds for this item (full media length, or a segment span when the endpoint documents a start/end).
  • viewsView count when the platform exposes one.
  • likesLike count (number).
  • thumbnailUrlThumbnail image URL.
  • videoUrlHLS playlist URL (.m3u8) for this clip. Same value as hlsUrl — not a progressive MP4 file. Use an HLS player or ffmpeg; do not save as .mp4.
  • privacyClip privacy (e.g. public).
  • isMatureWhether Kick marks the clip as mature content.
  • livestreamIdKick livestream id the clip was taken from.
  • vodStartsAtOffset into the source VOD (seconds) where the clip starts. Paired with vod.urlWithOffset.
  • vodSource VOD — {id, url, urlWithOffset}. url is https://kick.com/{channel}/videos/{id}; urlWithOffset appends ?t={vodStartsAt} seconds.
  • categoryKick category display name (e.g. Just Chatting).
  • categoryIdKick category id.
  • categorySlugKick category slug (e.g. just-chatting).
  • parentCategoryKick parent category (e.g. irl).
  • categoryBannerCategory banner image URL when Kick exposes one.
  • channelKick broadcaster channel for the clip — {id, username, displayName, url, profilePicture}; name is a deprecated alias of displayName.
  • creatorWho created/cut the Kick clip (distinct from the broadcaster channel) — {id, username, displayName, url, profilePicture}; name is a deprecated alias of displayName.

Clips

Each item in clips contains:

  • platformPlatform identifier for this response (matches the endpoint's platform).
  • idStable platform ID for the item.
  • urlKick clip web page (https://kick.com/{channel}/clips/clip_…). Not the HLS playlist.
  • titleTitle of the item.
  • createdAtCreation date (ISO 8601).
  • durationSecondsLength in seconds for this item (full media length, or a segment span when the endpoint documents a start/end).
  • viewsView count when the platform exposes one.
  • likesLike count (number).
  • thumbnailUrlThumbnail image URL.
  • videoUrlHLS playlist URL (.m3u8) for this clip. Same value as hlsUrl — not a progressive MP4 file. Use an HLS player or ffmpeg; do not save as .mp4.
  • videoTypeAlways "hls" for Kick clips today (Kick serves playlist.m3u8).
  • hlsUrlKick clip HLS playlist (.m3u8). Prefer this when you need an explicit stream URL.
  • privacyClip privacy (e.g. public).
  • isMatureWhether Kick marks the clip as mature content.
  • livestreamIdKick livestream id the clip was taken from.
  • categoryKick category display name (e.g. Just Chatting).
  • categoryIdKick category id.
  • categorySlugKick category slug (e.g. just-chatting).
  • parentCategoryKick parent category (e.g. irl).
  • channelKick broadcaster channel for the clip — {id, username, displayName, url, profilePicture}; name is a deprecated alias of displayName.
  • creatorWho created/cut the Kick clip (distinct from the broadcaster channel) — {id, username, displayName, url, profilePicture}; name is a deprecated alias of displayName.

Parameters

NameTypeRequiredDescription
urlstringYesKick clip URL for one enriched clip (e.g. https://kick.com/{channel}/clips/clip_…), or channel URL/@username for recent clips[]. 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.
limitintegerNoChannel mode only — max recent clips to return (default 30, max 100). Ignored when url is a clip. Flat 1 credit. No cursor — Kick returns a single page.
cachebooleanNoSet 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.
cacheMaxAgestringNoMax 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.

Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh.

Using an AI agent? This endpoint is the MCP tool kick_clip via @captapi/mcp. Set it up →

How it works

  1. 1. Sign up — get 100 free credits, no card required.
  2. 2. Create a key from your dashboard.
  3. 3. Send one request to /v1/kick/clip and parse the JSON response.

Use cases

Clip enrichment

Resolve a Kick clip URL to creator vs channel, views, category, and HLS playlist for players/ffmpeg.

Channel clip feeds

Pass a channel URL to pull recent clips[] (limit up to 100) without a duplicate top-level clip.

VOD deep-links

Open vod.urlWithOffset to jump to the exact second in the source VOD where the clip was cut.

Moderation flags

Read isMature + privacy before surfacing a clip in a public feed.

Frequently asked questions

What does the Kick Clip API do?+

The Kick Clip API lets you fetch full metadata and key stats from a public Kick clip using one GET request to /v1/kick/clip. It returns clean JSON — no OAuth or infrastructure setup required.

How many credits does the Kick 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 Kick 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 Kick 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 use the Kick Clip API?

Sign up, grab your key, and make your first call in 60 seconds.