Public API
User
GET /v1/user/:platform/:externalId
Returns a user's public profile: a global bucket plus per-channel buckets,
each containing the user's badges and appearance (custom nickname, custom
font, glow).
Endpoint
GET https://api.enhancer.at/v1/user/:platform/:externalId| Parameter | In | Description |
|---|---|---|
platform | path | Platform name: TWITCH or KICK |
externalId | path | User external id or login |
| Query parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 0 | Zero-based channels page |
pageSize | integer | 50 | Channels per page (1 to 100) |
Example
curl https://api.enhancer.at/v1/user/twitch/igorovhResponse 200:
{
"platform": "TWITCH",
"accountId": "a1b85243-288d-4022-912e-7e76a49be380",
"externalId": "87037696",
"login": "igorovh",
"displayName": "igorovh",
"global": {
"badges": [
{
"badgeId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"sources": {
"18x18": "https://cdn.enhancer.at/badge/[...sha256...]/18.webp",
"36x36": "https://cdn.enhancer.at/badge/[...sha256...]/36.webp",
"72x72": "https://cdn.enhancer.at/badge/[...sha256...]/72.webp"
},
"name": "Enhancer Developer",
"description": "Enhancer Developer",
"priority": 999
}
],
"appearance": {
"customNickname": "igor",
"customFont": null,
"hasGlow": true
}
},
"channels": [
{
"channelExternalId": "112233445",
"channelLogin": "h2p_gucio",
"badges": [
{
"badgeId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"sources": {
"18x18": "https://cdn.enhancer.at/badge/[...sha256...]/18.webp",
"36x36": "https://cdn.enhancer.at/badge/[...sha256...]/36.webp",
"72x72": "https://cdn.enhancer.at/badge/[...sha256...]/72.webp"
},
"name": "Enhancer Developer",
"description": "Enhancer Developer",
"priority": 999
}
],
"appearance": {
"customNickname": "igor",
"customFont": null,
"hasGlow": true
}
},
{
"channelExternalId": "556677889",
"channelLogin": "demonzz1",
"badges": [
{
"badgeId": "e4a7c8b2-91d3-4f56-a7b8-2c3d4e5f6a7b",
"sources": {
"18x18": "https://cdn.enhancer.at/badge/[...sha256...]/18.webp",
"36x36": "https://cdn.enhancer.at/badge/[...sha256...]/36.webp",
"72x72": "https://cdn.enhancer.at/badge/[...sha256...]/72.webp"
},
"name": "Enhancer Tester",
"description": "Enhancer Tester",
"priority": 100
}
],
"appearance": null
}
],
"page": 0,
"hasNextPage": false
}Response fields
| Field | Type | Description |
|---|---|---|
platform | string | TWITCH or KICK |
accountId | uuid | User account id |
externalId | string | Platform user id |
login | string | User login |
displayName | string | Display name |
global | object | Profile-wide badges and appearance |
channels | object[] | Per-channel entries, paginated |
page | number | Current zero-based channels page |
hasNextPage | boolean | Whether more channel pages exist |
Badge item (in global.badges and channels[].badges):
| Field | Type | Description |
|---|---|---|
badgeId | uuid | Badge id |
sources | object | Image URLs by size, see Badge Images |
name | string | Badge name |
description | string | Badge description |
priority | number | Sort order, ascending |
Appearance object (global.appearance and channels[].appearance):
| Field | Type | Description |
|---|---|---|
customNickname | string | null | Nickname override |
customFont | string | null | Font override |
hasGlow | boolean | Whether the nickname glows |
channels[] item:
| Field | Type | Description |
|---|---|---|
channelExternalId | string | Channel platform id |
channelLogin | string | Channel login |
badges | object[] | User's badges in this channel |
appearance | object | null | Falls back to global.appearance when null |
Response notes
channels[]contains one entry per channel where the user has at least one badge or appearance, sorted bychannelExternalId.- Pagination applies to
channels[]only;globalis always complete. Iterate withpageuntilhasNextPageisfalse. - Responses are not cached (
Cache-Control: no-store).
Errors
| Status | Meaning |
|---|---|
400 | Invalid parameters |
404 | User not found |
Error responses use a shared shape:
{ "error": { "code": "string", "message": "string" } }