Public API
Channel
GET /v1/channel/:platform/:externalId/aggregate
Returns the aggregated state of a channel: the accounts assigned to it with their badge assignments and appearance, and the badge definitions. The response always contains the complete state, there is no pagination.
Endpoint
GET https://api.enhancer.at/v1/channel/:platform/:externalId/aggregate| Parameter | In | Description |
|---|---|---|
platform | path | Platform name: TWITCH or KICK |
externalId | path | Channel external id or login. Use global for the global aggregate. |
Example
curl https://api.enhancer.at/v1/channel/twitch/h2p_gucio/aggregateResponse 200:
{
"channelId": "3f2b8c14-6a7d-4e89-9b0c-1d2e3f4a5b6c",
"platform": "TWITCH",
"accounts": [
{
"accountId": "a1b85243-288d-4022-912e-7e76a49be380",
"externalId": "87037696",
"badgesIds": ["7c9e6679-7425-40de-944b-e07fc1f90ae7"],
"customNickname": "igor",
"customFont": null,
"hasGlow": true
},
{
"accountId": "5e8d4c2b-7a9f-4e31-b6d8-9c0a1b2c3d4e",
"externalId": "556677889",
"badgesIds": ["b3d26f1a-8e4f-4c7a-9d21-6f5a8b9c0d12"],
"customNickname": null,
"customFont": null,
"hasGlow": false
}
],
"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",
"priority": 999
},
{
"badgeId": "b3d26f1a-8e4f-4c7a-9d21-6f5a8b9c0d12",
"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": "Contributor",
"priority": 10
}
],
"cursor": "1787259545448-0"
}Response fields
| Field | Type | Description |
|---|---|---|
channelId | uuid | null | Channel id, null for the global aggregate |
platform | string | TWITCH or KICK |
accounts | object[] | Users assigned to this channel |
badges | object[] | Badge definitions referenced by accounts[].badgesIds |
cursor | string | Nothing important, you don't need to worry about it ;) |
accounts[] item:
| Field | Type | Description |
|---|---|---|
accountId | uuid | User account id |
externalId | string | Platform user id |
badgesIds | uuid[] | Badge ids from badges[] assigned in this channel |
customNickname | string | null | Nickname override |
customFont | string | null | Font override |
hasGlow | boolean | Whether the nickname glows |
badges[] item:
| Field | Type | Description |
|---|---|---|
badgeId | uuid | Badge id |
sources | object | Image URLs by size, see Badge Images |
name | string | Badge name |
priority | number | Sort order, ascending |
Notes
accounts[].badgesIdsreferences ids frombadges[].- Badge definitions intentionally have no
descriptionfield. - Responses carry an
ETagheader; send it asIf-None-Matchto receive304 Not Modifiedwhen nothing changed.
Errors
| Status | Meaning |
|---|---|
400 | Invalid parameters |
404 | Channel not found |
Error responses use a shared shape:
{ "error": { "code": "string", "message": "string" } }