Kick API endpoint
Returns one Kick clip by id: title, kick.com link, thumbnail, views, duration, creation time, the moment it starts inside the source broadcast, mature flag, category and channel. id is a clip id such as clip_01M5SKVA6GGAAAT5YPJ7J43WE4, from the id field of kick-channel-clips or kick-clips. A malformed id returns a 400 and an unknown clip returns not found. Playable clip URLs are never returned.
/kick/clipNotable response behavior:
video_id and video_offset_seconds say which broadcast the clip came from and where it starts inside it.url is the kick.com clip page. Playable clip and playlist URLs are never returned.400; an unknown clip returns 404.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"clip": {
"id": "clip_01M5SKVA6GGAAAT5YPJ7J43WE4",
"title": "\"Bro, this thing teleports\"",
"url": "https://kick.com/xqc/clips/clip_01M5SKVA6GGAAAT5YPJ7J43WE4",
"thumbnail_url": "https://clips.kick.com/clips/ee/clip_01M5SKVA6GGAAAT5YPJ7J43WE4/thumbnail.webp",
"views": 10,
"duration_seconds": 45,
"created_at": "2026-10-25T13:27:04.463162Z",
"started_at": "2026-10-25T00:24:20Z",
"mature": true,
"category": {
"id": 15,
"name": "Just Chatting",
"slug": "just-chatting"
},
"channel": {
"id": 668,
"slug": "xqc",
"username": "xQc",
"profile_picture": "https://files.kick.com/images/user/676/profile_image/conversion/931b4e8f-5445-427c-bd82-b473530390cc-medium.we…",
"verified": true,
"url": "https://kick.com/xqc"
},
"video_id": "01a16fae-2858-7891-af08-b66670f173f8",
"video_offset_seconds": 12814
}
}
}
| Field | In the sample | Value in the sample |
|---|---|---|
| clip.id | Has a value | |
| clip.title | Has a value | |
| clip.url | Has a value | kick.com |
| clip.thumbnail_url | Has a value | clips.kick.com |
| clip.views | Has a value | 53 |
| clip.duration_seconds | Has a value | 45 |
| clip.created_at | Has a value | 2026-10-25 |
| clip.started_at | Has a value | 2026-10-25 |
| clip.mature | Has a value | true |
| clip.category | Has a value | |
| clip.creator | Has a value | |
| clip.channel | Has a value | |
| clip.video_id | Has a value | |
| clip.video_offset_seconds | Has a value |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Clip id from kick-clips' or kick-channel-clips' own clips[].id field | clip_01M5SKVA6GGAAAT5YPJ7J43WE4 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kick/clip?id=clip_01M5SKVA6GGAAAT5YPJ7J43WE4" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"clip": {
"id": "clip_01M5SKVA6GGAAAT5YPJ7J43WE4",
"title": "\"Bro, this thing teleports\"",
"url": "https://kick.com/xqc/clips/clip_01M5SKVA6GGAAAT5YPJ7J43WE4",
"thumbnail_url": "https://clips.kick.com/clips/ee/clip_01M5SKVA6GGAAAT5YPJ7J43WE4/thumbnail.webp",
"views": 10,
"duration_seconds": 45,
"created_at": "2026-10-25T13:27:04.463162Z",
"started_at": "2026-10-25T00:24:20Z",
"mature": true,
"category": {
"id": 15,
"name": "Just Chatting",
"slug": "just-chatting"
},
"channel": {
"id": 668,
"slug": "xqc",
"username": "xQc",
"profile_picture": "https://files.kick.com/images/user/676/profile_image/conversion/931b4e8f-5445-427c-bd82-b473530390cc-medium.we…",
"verified": true,
"url": "https://kick.com/xqc"
},
"video_id": "01a16fae-2858-7891-af08-b66670f173f8",
"video_offset_seconds": 12814
}
}
}Request schema
No body schema
Response schema
#/definitions/kick.clipResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | kick.ClipResponse | No | ||||
| data.clip | kick.Clip | No | ||||
| data.clip.category | kick.CategoryRef | No | ||||
| data.clip.category.id | integer | No | ||||
| data.clip.category.name | string | No | ||||
| data.clip.category.slug | string | No | ||||
| data.clip.channel | kick.ChannelRef | No | ||||
| data.clip.channel.id | integer | No | ||||
| data.clip.channel.profile_picture | string | No | ||||
| data.clip.channel.slug | string | No | ||||
| data.clip.channel.url | string | No | ||||
| data.clip.channel.username | string | No | ||||
| data.clip.channel.verified | boolean | No | ||||
| data.clip.created_at | string | No | ||||
| data.clip.duration_seconds | integer | No | ||||
| data.clip.id | string | No | ||||
| data.clip.likes | integer | No | ||||
| data.clip.mature | boolean | No | ||||
| data.clip.started_at | string | No | ||||
| data.clip.thumbnail_url | string | No | ||||
| data.clip.title | string | No | ||||
| data.clip.url | string | No | ||||
| data.clip.video_id | string | No | ||||
| data.clip.video_offset_seconds | integer | No | ||||
| data.clip.views | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/kick/clip?id=clip_01M5SKVA6GGAAAT5YPJ7J43WE4" \
-H "x-api-key: $CRAWLORA_API_KEY"