> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/kick>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/kick.mdx>

---

# Kick API. Channels, streams and clips as JSON.

Look up a channel, check whether it is live, page its videos and clips, and read the live directory, categories, events and drop campaigns. Every response uses the same envelope.

- Channels + live
- VODs and clips
- 1 credit per request

`GET /v1/kick/channels/{slug}` is the center of the Kick API. A channel profile carries `bio`, `followers`, `socials`, `chat` modes, `links`, `subscriberBadges`, `recentCategories` and the current `livestream` when the channel is live. From there, `/v1/kick/channels/{slug}/videos`, `/clips`, `/leaderboard`, `/rewards`, `/goals`, `/emotes` and `/chatters` each add one part of the channel.

The rest of the catalog covers single records and discovery: a VOD by UUID, a clip by id, the global, category and newest clip lists, any user by username, the live directory, channel search, the category list and detail, top channels, events and drop campaigns. Every answer is JSON in the `{ data, meta }` envelope with `data.lookupStatus` on lookups. Lists report `page.nextCursor` and `page.hasMore`, so you fetch one page at a time. A lookup that misses comes back as `lookupStatus: not_found`, not as an HTTP error.

## What you can get

- Channel profile with socials, chat modes, link panels, subscriber badges, recent categories and the current live stream.
- A channel's videos, clips, gifter leaderboard, channel-point rewards, goals and emotes.
- Single VOD and clip records with views, likes, duration, category and creator.
- Global, per-category and newest clip lists with sort, time window and cursor paging.
- Live directory, top gifted streams, top channels, channel search, category groups, top categories, category list and detail.
- Events with live streams or clips, drop campaigns including expired ones, and the people currently in a channel's chat.

## Kick endpoints

| Endpoint | Request | Credits | Docs |
| --- | --- | --- | --- |
| Channel | GET /v1/kick/channels/{slug} | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/get) |
| Videos | GET /v1/kick/channels/{slug}/videos | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/videos/get) |
| Gifter leaderboard | GET /v1/kick/channels/{slug}/leaderboard | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/leaderboard/get) |
| Channel-point rewards | GET /v1/kick/channels/{slug}/rewards | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/rewards/get) |
| Goals | GET /v1/kick/channels/{slug}/goals | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/goals/get) |
| Emotes | GET /v1/kick/channels/{slug}/emotes | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/emotes/get) |
| Top channels | GET /v1/kick/top-channels | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/top-channels/get) |
| Active chatters | GET /v1/kick/channels/{slug}/chatters | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/chatters/get) |
| Channel clips | GET /v1/kick/channels/{slug}/clips | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/clips/get) |
| Clip | GET /v1/kick/clips/{clipId} | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/clips/clipid/get) |
| Clips | GET /v1/kick/clips | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/clips/get) |
| Live status | GET /v1/kick/channels/{slug}/livestream | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/channels/slug/livestream/get) |
| Live directory | GET /v1/kick/livestreams | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/livestreams/get) |
| Language codes | GET /v1/kick/livestreams/languages | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/livestreams/languages/get) |
| Top gifted streams | GET /v1/kick/livestreams/top-gifted | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/livestreams/top-gifted/get) |
| Video | GET /v1/kick/videos/{videoId} | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/videos/videoid/get) |
| User | GET /v1/kick/users/{username} | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/users/username/get) |
| Search | GET /v1/kick/search | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/search/get) |
| Categories | GET /v1/kick/categories | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/categories/get) |
| Category | GET /v1/kick/categories/{slug} | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/categories/slug/get) |
| Category groups | GET /v1/kick/category-groups | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/category-groups/get) |
| Top categories | GET /v1/kick/top-categories | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/top-categories/get) |
| Events | GET /v1/kick/events | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/events/get) |
| Drop campaigns | GET /v1/kick/drops | 1 credit Failed requests are free Found, empty and not-found answers are all charged | [docs](https://www.socialfetch.dev/docs/api/v1/kick/drops/get) |

## How to start

1. **Create an API key.** Sign up at Social Fetch and copy a key (`sfk_…`). New accounts get 100 free credits, enough to try several routes on a few channels.
2. **Pick the channel or record.** Use the channel slug, for example `GET /v1/kick/channels/xqc` for the profile or `GET /v1/kick/channels/xqc/clips?sort=date` for its newest clips. For a single record use the VOD UUID or the `clip_…` id. Send `x-api-key` on every request.
3. **Branch and page.** Check `data.lookupStatus` before you store a row. Keep requesting with `page.nextCursor` while `page.hasMore` is true, and bill from `meta.creditsCharged`.

## Pricing

Each Kick route charges a flat credit amount per completed request, shown on every endpoint page. Each page of a list is its own request. Credits never expire on pay-as-you-go packs, and `meta.creditsCharged` on every response is the billing source of truth.

## Compared with the official API

Social Fetch gives every Kick route one JSON shape: ISO 8601 UTC timestamps, numeric counts even where Kick uses a string, typed `lookupStatus` responses, and opaque cursors that continue the same list and filters. Lists whose order moves while you walk them drop recently returned ids, but a long walk can still repeat a row; de-duplicate by id. You do not need an app registration or a user session to call the public routes.

## FAQ

### What Kick data can I get from the API?

Channel profiles, live status, a channel's videos, clips, gifter leaderboard, channel-point rewards, goals and emotes, single VODs and clips, global and category clip lists, users, the live directory, top gifted streams, channel search, category groups, the busiest categories, top channels, events, drop campaigns and active chatters.

### How do I name a Kick channel?

Use the channel slug, for example xqc, trainwreckstv or pala_okey. Slugs are case-insensitive and can contain letters, digits, underscores and hyphens. An unknown slug returns data.lookupStatus: not_found with channel: null.

### What does a channel response include?

data.channel carries id, userId, slug, url, username, bio, avatarUrl, socials, followers, isVerified, isAffiliate, isBanned, subscription, subscriberBadges, chat modes, links, recentCategories and livestream. livestream is null when the channel is offline.

### How do lists page?

Lists return data.page with page, hasMore, nextCursor and lastPage. Send nextCursor back as cursor with the same filters until hasMore is false. Sortable clip pages drop recently returned ids, so a page can be shorter than a full page even when hasMore is true; keep following nextCursor, and de-duplicate by clips[].id. The last page with rows can still say hasMore is true and be followed by an empty page; stop at the first empty page, which has hasMore false and no nextCursor. Categories also accept page 1 to 20. A channel's videos come back in one page of up to 30 with no paging.

### Does a VOD always have a playback URL?

No. A subscriber-only VOD returns lookupStatus: restricted with its public metadata and playbackUrl: null. A normal public VOD returns lookupStatus: found and a public playbackUrl.

### How many live streams can I list at once?

GET /v1/kick/livestreams returns up to 100 streams per page. The directory order moves while you walk it, so a row can repeat across cursor pages. De-duplicate by data.streams[].id, or follow page.nextCursor one page at a time.

### What does search return?

data.channels, data.categories and data.tags. The query must be at least 3 characters. Double quotes, semicolons, backslashes, ampersands and emoji are refused with HTTP 400 before any request. No match is still lookupStatus: found with empty arrays, so check the array lengths rather than treating an empty answer as an error.

### Can I tell whether a channel is live?

GET /v1/kick/channels/{slug}/livestream returns data.livestream with id, title, category, viewers, language, tags and startedAt when the channel is live, and null when it is offline. On this route startedAt is the stream record's creation time and can differ by a few seconds from the channel route's start time. An unknown slug returns lookupStatus: not_found, so offline and missing are distinct.

### How are active chatters returned?

GET /v1/kick/channels/{slug}/chatters returns up to 100 named people in data.chatters, with separate moderators, vips, ogs and bots arrays and data.totalCount for everyone in chat. avatarUrl is the real URL, including Kick's default avatar when the person has not set one.

### How much does the Kick API cost?

Every Kick route charges a flat amount per completed request, shown on each endpoint page, and each page of a list is billed separately. A found, empty or not-found answer is a completed request and costs that amount; invalid requests and errors are free. Check meta.creditsCharged on every response. New accounts start with 100 free credits.

## Related

- [Kick Channel API](https://www.socialfetch.dev/platforms/kick/channels-slug): Profile, socials, chat modes, links and live status (`GET /v1/kick/channels/{slug}`).
- [Kick Channel Clips API](https://www.socialfetch.dev/platforms/kick/channels-slug-clips): A channel's clips by views or date, with a cursor (`GET /v1/kick/channels/{slug}/clips`).
- [Kick VOD API](https://www.socialfetch.dev/platforms/kick/videos-videoid): One VOD by UUID with its channel, categories and availability (`GET /v1/kick/videos/{videoId}`).
- [Kick Live Directory API](https://www.socialfetch.dev/platforms/kick/livestreams): Live streams by viewers or featured order (`GET /v1/kick/livestreams`).
- [Ask in plain English](https://www.socialfetch.dev/ask): Route a natural-language Kick question to the matching operation.
- [Hosted MCP](https://www.socialfetch.dev/mcp): Call Kick tools from Cursor or Claude with the same credit metering as REST.
