Kick Clip API
Get a Kick clip — creator vs channel, HLS playback, VOD deep-link, views, and duration as structured JSON.
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
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
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
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Kick 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. |
| limit | integer | No | Channel 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. |
| 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. |
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.
How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/kick/clipand 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.