Kick API endpoint
Returns the chat emote sets available in a Kick (kick.com) channel: the channel's own custom emotes (id, name, whether subscribers only, image link), plus the Global and Emoji sets that every channel shares. slug is the channel slug from its kick.com address, case-insensitive; a full kick.com URL is also accepted. A channel with no custom emotes returns an empty channel set. Only public data is read and no playable media is returned. An unknown channel returns not found.
/kick/channel-emotesslug is required (see kick-channel).
Notable response behavior:
channel holds the channel's own custom emotes. A channel with none returns an empty list, not an error.global and emoji are the sets every channel shares and are the same on every call (64 and 66 emotes on 2026-10-26).subscribers_only is true for emotes only subscribers can use (most channel emotes).image_url is the emote image at its full size.404.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"slug": "xqc",
"channel": [
{
"id": 1153261,
"name": "xqcLK",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1153261/fullsize"
},
{
"id": 1082364,
"name": "xqcAM",
"subscribers_only": true,
"image_url": "https://files.kick.com/emotes/1082364/fullsize"
},
{
"id": 1082897,
"name": "xqcCheer",
"subscribers_only": true,
"image_url": "https://files.kick.com/emotes/1082897/fullsize"
}
],
"global": [
{
"id": 3753119,
"name": "asmonSmash",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/3753119/fullsize"
},
{
"id": 5380971,
"name": "AURAPULSE",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/5380971/fullsize"
},
{
"id": 5756662,
"name": "AYAYA",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/5756662/fullsize"
}
],
"emoji": [
{
"id": 1730752,
"name": "emojiAngel",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1730752/fullsize"
},
{
"id": 1730753,
"name": "emojiAngry",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1730753/fullsize"
},
{
"id": 1579033,
"name": "emojiAstonished",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1579033/fullsize"
}
]
}
}
| Field | Filled in, of 66 checked | Values in the sample |
|---|---|---|
| id | 66 | |
| name | 66 | |
| subscribers_only | 66 | true in 0 of 66 |
| image_url | 66 | files.kick.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug | string | Yes | Channel slug from kick.com/{slug}, case-insensitive; a kick.com URL is also accepted | xqc | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kick/channel-emotes?slug=xqc" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"slug": "xqc",
"channel": [
{
"id": 1153261,
"name": "xqcLK",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1153261/fullsize"
},
{
"id": 1082364,
"name": "xqcAM",
"subscribers_only": true,
"image_url": "https://files.kick.com/emotes/1082364/fullsize"
},
{
"id": 1082897,
"name": "xqcCheer",
"subscribers_only": true,
"image_url": "https://files.kick.com/emotes/1082897/fullsize"
}
],
"global": [
{
"id": 3753119,
"name": "asmonSmash",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/3753119/fullsize"
},
{
"id": 5380971,
"name": "AURAPULSE",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/5380971/fullsize"
},
{
"id": 5756662,
"name": "AYAYA",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/5756662/fullsize"
}
],
"emoji": [
{
"id": 1730752,
"name": "emojiAngel",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1730752/fullsize"
},
{
"id": 1730753,
"name": "emojiAngry",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1730753/fullsize"
},
{
"id": 1579033,
"name": "emojiAstonished",
"subscribers_only": false,
"image_url": "https://files.kick.com/emotes/1579033/fullsize"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/kick.channelEmotesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | kick.ChannelEmotesResponse | No | ||||
| data.channel | array | No | ||||
| data.channel[].id | integer | No | ||||
| data.channel[].image_url | string | No | ||||
| data.channel[].name | string | No | ||||
| data.channel[].subscribers_only | boolean | No | ||||
| data.emoji | array | No | ||||
| data.emoji[].id | integer | No | ||||
| data.emoji[].image_url | string | No | ||||
| data.emoji[].name | string | No | ||||
| data.emoji[].subscribers_only | boolean | No | ||||
| data.global | array | No | ||||
| data.global[].id | integer | No | ||||
| data.global[].image_url | string | No | ||||
| data.global[].name | string | No | ||||
| data.global[].subscribers_only | boolean | No | ||||
| data.slug | string | 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/channel-emotes?slug=xqc" \
-H "x-api-key: $CRAWLORA_API_KEY"