Kick
GET /v1/kick/clip

Kick Clip API

Get a Kick clip, or a channel's recent clips — 7d clip cache. Flat 1 credit.

1 credit per request
TL;DR
Get a Kick clip, or a channel's recent clips — 7d clip cache. Flat 1 credit. 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, source} with creator (who cut the clip) separate from channel (broadcaster), privacy, isMature, startedAt, livestreamId, vod{id,url,urlWithOffset}, vodStartsAt, and categorySlug/parentCategory. source is native | cache. Playback is HLS: videoType is "hls" and videoUrl is the .m3u8 playlist (not a progressive MP4 — download that URL and you get a text manifest). Clip mode caches by default (7d) — a clip is a finished recording; set cache=false to refetch current views/likes. Channel input accepts kick.com/{name}, kick.com/@{name}, @{name}, or bare {name} → {channelUrl, totalReturned, clips[]} only — no top-level clip and no cursor: up to limit clips, newest first (default 20, max 100). Channel listings stay fresh unless cache=true. Kick has its own retry budget, independent of other platforms. An empty clips[] is 200 at 0 credits, not 404. A VOD URL is 400 WRONG_RESOURCE_TYPE (Kick coverage is clips only). Session-only liked is omitted. Flat 1 credit on a 200 with rows.

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-Request-Id (include it when contacting support). Where the response has a source field, it names the path that served the data: native, extended, cache or asr. 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 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 (at most limit; fewer when the channel has fewer). No nextCursor.

Clip

The clip object contains:

  • platformPlatform identifier for this response (matches the endpoint's platform).
  • idId of this clip item.
  • urlKick clip web page (https://kick.com/{channel}/clips/clip_…). Not the HLS playlist.
  • titleTitle of this clip 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 — 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}.
  • creatorWho created/cut the Kick clip (distinct from the broadcaster channel) — {id, username, displayName, url, profilePicture}.

Clips

Each item in clips contains:

  • platformPlatform identifier for this response (matches the endpoint's platform).
  • idId of this clips item.
  • urlKick clip web page (https://kick.com/{channel}/clips/clip_…). Not the HLS playlist.
  • titleTitle of this clips 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 — 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).
  • hlsUrlHLS master/media playlist URL (.m3u8). Not a progressive video file — players and ffmpeg ingest this as a stream.
  • 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}.
  • creatorWho created/cut the Kick clip (distinct from the broadcaster channel) — {id, username, displayName, url, profilePicture}.

Parameters

NameTypeRequiredDescription
urlstringYesKick clip URL for one enriched clip (e.g. https://kick.com/{channel}/clips/clip_…), or channel input for recent clips[]: kick.com/{name}, kick.com/@{name}, @{name}, or {name}. 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 20, max 100). Ignored when url is a clip. Flat 1 credit. No cursor — one response holds up to limit clips.
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.

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. 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 access, rate limits, retries, and authentication for you.

What does source tell me?+

source is native for a fresh fetch and cache for a cache hit. There is no other value. Channel mode returns up to limit clips, newest first: the default 20 is one request to Kick, and each further 20 clips is one more request, so a larger limit takes longer.

Why is cache on by default in clip mode?+

Only in clip mode. A clip is a finished recording: its views and likes keep moving, and videoUrl carries no expiry parameter. Default TTL is 7 days. Channel mode is a listing and stays fresh unless you pass cache=true. cache=false forces a refetch (views/likes).

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

Kick Clip API — Captapi