Enhancer logoEnhancer
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
ParameterInDescription
platformpathPlatform name: TWITCH or KICK
externalIdpathUser external id or login
Query parameterTypeDefaultDescription
pageinteger0Zero-based channels page
pageSizeinteger50Channels per page (1 to 100)

Example

curl https://api.enhancer.at/v1/user/twitch/igorovh

Response 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

FieldTypeDescription
platformstringTWITCH or KICK
accountIduuidUser account id
externalIdstringPlatform user id
loginstringUser login
displayNamestringDisplay name
globalobjectProfile-wide badges and appearance
channelsobject[]Per-channel entries, paginated
pagenumberCurrent zero-based channels page
hasNextPagebooleanWhether more channel pages exist

Badge item (in global.badges and channels[].badges):

FieldTypeDescription
badgeIduuidBadge id
sourcesobjectImage URLs by size, see Badge Images
namestringBadge name
descriptionstringBadge description
prioritynumberSort order, ascending

Appearance object (global.appearance and channels[].appearance):

FieldTypeDescription
customNicknamestring | nullNickname override
customFontstring | nullFont override
hasGlowbooleanWhether the nickname glows

channels[] item:

FieldTypeDescription
channelExternalIdstringChannel platform id
channelLoginstringChannel login
badgesobject[]User's badges in this channel
appearanceobject | nullFalls 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 by channelExternalId.
  • Pagination applies to channels[] only; global is always complete. Iterate with page until hasNextPage is false.
  • Responses are not cached (Cache-Control: no-store).

Errors

StatusMeaning
400Invalid parameters
404User not found

Error responses use a shared shape:

{ "error": { "code": "string", "message": "string" } }

On this page