---
title: "Kick Clip API"
method: GET
path: "/v1/kick/clip"
tags: ["Kick"]
---

# Kick Clip API

`GET /v1/kick/clip`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/kick/clip`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Get a Kick clip — source, 7d clip cache, fallback paths on a miss.

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 | extended | cache, so a fallback is visible. 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) — twenty of twenty-four fields never change; set cache=false to refetch 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 (Kick's channel clips list is a single page; use limit, default 30, max 100). Channel listings stay fresh unless cache=true. Several fetch paths are tried in order, the slowest last. 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.

Docs: https://captapi.com/apis/kick-clip

## Query parameters

- `url` string, required
- `limit` integer
- `cache` boolean
- `cacheMaxAge` '1d' | '3d' | '7d' | '14d' | '30d'

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `channelUrl` string: Canonical Kick channel URL derived from the request.
    - `clip` object
      - `platform` string: Platform identifier for this response (matches the endpoint's platform).
      - `id` string: Id of this clip item.
      - `url` string: Kick clip web page (https://kick.com/{channel}/clips/clip_…). Not the HLS playlist.
      - `title` string: Title of this clip item.
      - `createdAt` string: Creation date (ISO 8601).
      - `startedAt` string: When the stream, clip, or broadcast segment started (ISO 8601).
      - `durationSeconds` integer: Length in seconds for this item (full media length, or a segment span when the endpoint documents a start/end).
      - `views` integer: View count when the platform exposes one.
      - `likes` integer: Like count (number).
      - `thumbnailUrl` string: Thumbnail image URL.
      - `videoUrl` string: HLS playlist URL (.m3u8) for this clip — not a progressive MP4 file. Use an HLS player or ffmpeg; do not save as .mp4.
      - `privacy` string: Clip privacy (e.g. public).
      - `isMature` boolean: Whether Kick marks the clip as mature content.
      - `livestreamId` string: Kick livestream id the clip was taken from.
      - `vodStartsAt` integer: Offset into the source VOD (seconds) where the clip starts. Paired with vod.urlWithOffset.
      - `vod` object: Source VOD — {id, url, urlWithOffset}. url is https://kick.com/{channel}/videos/{id}; urlWithOffset appends ?t={vodStartsAt} seconds.
        - `id` string: Id of this clip item.
      - `category` string: Kick category display name (e.g. Just Chatting).
      - `categoryId` string: Kick category id.
      - `categorySlug` string: Kick category slug (e.g. just-chatting).
      - `parentCategory` string: Kick parent category (e.g. irl).
      - `categoryBanner` string: Category banner image URL when Kick exposes one.
      - `channel` object: Kick broadcaster channel for the clip — {id, username, displayName, url, profilePicture}.
        - `id` string: Id of this clip item.
        - `username` string
        - `name` string
        - `url` string: Kick clip web page (https://kick.com/{channel}/clips/clip_…). Not the HLS playlist.
        - `profilePicture` string
      - `creator` object: Who created/cut the Kick clip (distinct from the broadcaster channel) — {id, username, displayName, url, profilePicture}.
        - `id` string: Id of this clip item.
        - `username` string
        - `name` string
        - `url` string: Kick clip web page (https://kick.com/{channel}/clips/clip_…). Not the HLS playlist.
        - `profilePicture` string
    - `totalReturned` unknown

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

[API](https://skmtc.dev/captapi/apis/captapi-api.md) · [All operations](https://skmtc.dev/captapi/apis/captapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/captapi/apis/captapi-api/revisions/c9b9ac5ff1bd?raw)
