> ## Documentation Index
> Fetch the complete documentation index at: https://docs.drain.lat/llms.txt
> Use this file to discover all available pages before exploring further.

# Kick

> Fetch public Kick channel profiles, past videos, and clips.

# Kick

**Base URL:** `https://drain.lat/api/v1/kick`

<AccordionGroup>
  <Accordion title="GET /profile/:username" icon="user">
    Fetch a public Kick channel profile including live status.

    ```
    GET /api/v1/kick/profile/:username
    ```

    <ParamField path="username" type="string" required>
      The Kick channel username (slug).
    </ParamField>

    <CodeGroup>
      ```bash cURL theme={null}
      curl "https://drain.lat/api/v1/kick/profile/xqc" \
        -H "x-api-key: YOUR_API_KEY"
      ```

      ```javascript JavaScript theme={null}
      const res = await fetch("https://drain.lat/api/v1/kick/profile/xqc", {
        headers: { "x-api-key": "YOUR_API_KEY" }
      });
      const data = await res.json();
      ```

      ```python Python theme={null}
      import requests

      res = requests.get(
          "https://drain.lat/api/v1/kick/profile/xqc",
          headers={"x-api-key": "YOUR_API_KEY"}
      )
      print(res.json())
      ```
    </CodeGroup>

    <ResponseField name="id" type="number">Kick user ID.</ResponseField>
    <ResponseField name="slug" type="string">Channel slug used in the URL.</ResponseField>
    <ResponseField name="username" type="string">Username.</ResponseField>
    <ResponseField name="displayName" type="string">Display name.</ResponseField>
    <ResponseField name="bio" type="string">Channel bio.</ResponseField>
    <ResponseField name="avatarUrl" type="string">Avatar image URL.</ResponseField>
    <ResponseField name="bannerUrl" type="string">Channel banner image URL.</ResponseField>
    <ResponseField name="followers" type="number">Follower count.</ResponseField>
    <ResponseField name="isVerified" type="boolean">Whether the channel is verified.</ResponseField>
    <ResponseField name="isLive" type="boolean">Whether the channel is currently live.</ResponseField>
    <ResponseField name="streamTitle" type="string">Current stream title. Empty string when offline.</ResponseField>
    <ResponseField name="category" type="string">Current stream category. Empty string when offline.</ResponseField>
    <ResponseField name="viewerCount" type="number">Current viewer count. `null` when offline.</ResponseField>
    <ResponseField name="chatroomId" type="number">Chatroom ID.</ResponseField>
    <ResponseField name="isMatureContent" type="boolean">Whether the channel is marked as mature.</ResponseField>
    <ResponseField name="profileUrl" type="string">Link to the Kick channel.</ResponseField>

    ```json Response theme={null}
    {
      "id": 123456,
      "slug": "xqc",
      "username": "xQc",
      "displayName": "xQc",
      "bio": "Just a guy.",
      "avatarUrl": "https://...",
      "bannerUrl": "https://...",
      "followers": 850000,
      "isVerified": false,
      "isLive": true,
      "streamTitle": "VARIETY GAMING",
      "category": "Just Chatting",
      "viewerCount": 42000,
      "chatroomId": 789,
      "isMatureContent": false,
      "profileUrl": "https://kick.com/xqc",
      "scrapedAt": "2026-05-12T10:00:00.000Z"
    }
    ```
  </Accordion>

  <Accordion title="GET /profile/:username/videos" icon="film">
    Get past broadcast videos for a Kick channel.

    ```
    GET /api/v1/kick/profile/:username/videos
    ```

    <ParamField path="username" type="string" required>
      The Kick channel username.
    </ParamField>

    <CodeGroup>
      ```bash cURL theme={null}
      curl "https://drain.lat/api/v1/kick/profile/xqc/videos" \
        -H "x-api-key: YOUR_API_KEY"
      ```

      ```javascript JavaScript theme={null}
      const res = await fetch("https://drain.lat/api/v1/kick/profile/xqc/videos", {
        headers: { "x-api-key": "YOUR_API_KEY" }
      });
      const data = await res.json();
      ```

      ```python Python theme={null}
      import requests

      res = requests.get(
          "https://drain.lat/api/v1/kick/profile/xqc/videos",
          headers={"x-api-key": "YOUR_API_KEY"}
      )
      print(res.json())
      ```
    </CodeGroup>

    <ResponseField name="username" type="string">Kick username.</ResponseField>

    <ResponseField name="videos" type="array">
      <Expandable title="video object">
        <ResponseField name="id" type="number">Video ID.</ResponseField>
        <ResponseField name="title" type="string">Video title.</ResponseField>
        <ResponseField name="thumbnailUrl" type="string">Thumbnail image URL.</ResponseField>
        <ResponseField name="duration" type="number">Duration in seconds.</ResponseField>
        <ResponseField name="views" type="number">View count.</ResponseField>
        <ResponseField name="startedAt" type="string">Stream start time (ISO 8601).</ResponseField>
        <ResponseField name="categoryName" type="string">Category at time of stream.</ResponseField>
        <ResponseField name="url" type="string">Link to the video.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="total" type="number">Number of videos returned.</ResponseField>

    ```json Response theme={null}
    {
      "username": "xqc",
      "videos": [
        {
          "id": 111,
          "title": "VARIETY STREAM",
          "thumbnailUrl": "https://...",
          "duration": 28800,
          "views": 120000,
          "startedAt": "2026-05-10T18:00:00.000Z",
          "categoryName": "Just Chatting",
          "url": "https://kick.com/video/111"
        }
      ],
      "total": 10,
      "scrapedAt": "2026-05-12T10:00:00.000Z"
    }
    ```
  </Accordion>

  <Accordion title="GET /profile/:username/clips" icon="scissors">
    Get clips from a Kick channel.

    ```
    GET /api/v1/kick/profile/:username/clips
    ```

    <ParamField path="username" type="string" required>
      The Kick channel username.
    </ParamField>

    <CodeGroup>
      ```bash cURL theme={null}
      curl "https://drain.lat/api/v1/kick/profile/xqc/clips" \
        -H "x-api-key: YOUR_API_KEY"
      ```

      ```javascript JavaScript theme={null}
      const res = await fetch("https://drain.lat/api/v1/kick/profile/xqc/clips", {
        headers: { "x-api-key": "YOUR_API_KEY" }
      });
      const data = await res.json();
      ```

      ```python Python theme={null}
      import requests

      res = requests.get(
          "https://drain.lat/api/v1/kick/profile/xqc/clips",
          headers={"x-api-key": "YOUR_API_KEY"}
      )
      print(res.json())
      ```
    </CodeGroup>

    <ResponseField name="username" type="string">Kick username.</ResponseField>

    <ResponseField name="clips" type="array">
      <Expandable title="clip object">
        <ResponseField name="id" type="string">Clip ID.</ResponseField>
        <ResponseField name="title" type="string">Clip title.</ResponseField>
        <ResponseField name="thumbnailUrl" type="string">Thumbnail image URL.</ResponseField>
        <ResponseField name="duration" type="number">Duration in seconds.</ResponseField>
        <ResponseField name="views" type="number">View count.</ResponseField>
        <ResponseField name="createdAt" type="string">Creation date (ISO 8601).</ResponseField>
        <ResponseField name="clipUrl" type="string">Link to the clip.</ResponseField>
        <ResponseField name="categoryName" type="string">Category at time of clip.</ResponseField>
        <ResponseField name="creatorUsername" type="string">Username of who created the clip.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="total" type="number">Number of clips returned.</ResponseField>

    ```json Response theme={null}
    {
      "username": "xqc",
      "clips": [
        {
          "id": "abc123",
          "title": "insane moment",
          "thumbnailUrl": "https://...",
          "duration": 30,
          "views": 85000,
          "createdAt": "2026-05-08T12:00:00.000Z",
          "clipUrl": "https://...",
          "categoryName": "Just Chatting",
          "creatorUsername": "xqc"
        }
      ],
      "total": 10,
      "scrapedAt": "2026-05-12T10:00:00.000Z"
    }
    ```
  </Accordion>
</AccordionGroup>
