@unavatar/core 3.46.16 → 3.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,6 +49,7 @@
49
49
  - [Hugging Face](#hugging-face)
50
50
  - [Instagram](#instagram)
51
51
  - [Juejin](#juejin)
52
+ - [Kick](#kick)
52
53
  - [Ko-fi](#ko-fi)
53
54
  - [LinkedIn](#linkedin)
54
55
  - [Mastodon](#mastodon)
@@ -106,13 +107,13 @@ Last updated on August 18, 2026
106
107
 
107
108
  ## Introduction
108
109
 
109
- **unavatar.io** retrieves anyone's avatar from a single URL — by username, email, or domain — across 72 platforms including [Instagram](https://unavatar.io/docs#instagram), [GitHub](https://unavatar.io/docs#github), [YouTube](https://unavatar.io/docs#youtube), [X/Twitter](https://unavatar.io/docs#xtwitter), and [Gravatar](https://unavatar.io/docs#gravatar). No API keys, no SDKs, free to start.
110
+ **unavatar.io** retrieves anyone's avatar from a single URL — by username, email, or domain — across 73 platforms including [Instagram](https://unavatar.io/docs#instagram), [GitHub](https://unavatar.io/docs#github), [YouTube](https://unavatar.io/docs#youtube), [X/Twitter](https://unavatar.io/docs#xtwitter), and [Gravatar](https://unavatar.io/docs#gravatar). No API keys, no SDKs, free to start.
110
111
 
111
112
  Try it: [unavatar.io/github/kikobeats](https://unavatar.io/github/kikobeats) · [unavatar.io/x/josebaseba](https://unavatar.io/x/josebaseba) · [unavatar.io/domain/reddit.com](https://unavatar.io/domain/reddit.com)
112
113
 
113
114
  Everything you need to serve avatars at scale:
114
115
 
115
- - **Versatile**: One endpoint rules 72 platforms and services — [TikTok](https://unavatar.io/docs#tiktok), [Instagram](https://unavatar.io/docs#instagram), [YouTube](https://unavatar.io/docs#youtube), [X/Twitter](https://unavatar.io/docs#xtwitter), [Gravatar](https://unavatar.io/docs#gravatar), and more — all queried the same way.
116
+ - **Versatile**: One endpoint rules 73 platforms and services — [TikTok](https://unavatar.io/docs#tiktok), [Instagram](https://unavatar.io/docs#instagram), [YouTube](https://unavatar.io/docs#youtube), [X/Twitter](https://unavatar.io/docs#xtwitter), [Gravatar](https://unavatar.io/docs#gravatar), and more — all queried the same way.
116
117
 
117
118
  - **Battle-tested**: Already serving 2.77 TB of avatars across 189.4M requests, with a 70% cache hit rate.
118
119
 
@@ -811,6 +812,12 @@ Get any Juejin user's profile picture by their numeric user ID.
811
812
 
812
813
  e.g., [unavatar.io/juejin/1556564194374926](https://unavatar.io/juejin/1556564194374926)
813
814
 
815
+ ### Kick
816
+
817
+ Get any Kick streamer's profile picture by their username.
818
+
819
+ e.g., [unavatar.io/kick/xqc](https://unavatar.io/kick/xqc)
820
+
814
821
  ### Ko-fi
815
822
 
816
823
  Get any Ko-fi page's profile picture by the creator username.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@unavatar/core",
3
3
  "description": "Get unified user avatar from social networks, including Instagram, SoundCloud, Telegram, Twitter, YouTube & more.",
4
4
  "homepage": "https://unavatar.io",
5
- "version": "3.46.16",
5
+ "version": "3.47.0",
6
6
  "main": "src/index.js",
7
7
  "exports": {
8
8
  ".": "./src/index.js",
@@ -129,7 +129,7 @@
129
129
  "@microlink/mql": "~0.18.0",
130
130
  "@microlink/ping-url": "~1.5.0",
131
131
  "bimi-url": "~1.0.0",
132
- "browserless": "~13.8.0",
132
+ "browserless": "~13.9.2",
133
133
  "cacheable-lookup": "~6.1.0",
134
134
  "data-uri-regex": "~0.1.4",
135
135
  "debug-logfmt": "~1.4.10",
@@ -30,6 +30,7 @@ const providerTiers = {
30
30
  'hevy',
31
31
  'instagram',
32
32
  'juejin',
33
+ 'kick',
33
34
  'ko-fi',
34
35
  'linkedin',
35
36
  'mastodon',
@@ -118,6 +119,7 @@ module.exports = ctx => {
118
119
  hevy: require('./hevy')(ctx),
119
120
  instagram: require('./instagram')(ctx),
120
121
  juejin: require('./juejin')(ctx),
122
+ kick: require('./kick')(ctx),
121
123
  'ko-fi': require('./ko-fi')(ctx),
122
124
  linkedin: require('./linkedin')(ctx),
123
125
  mastodon: require('./mastodon')(ctx),
@@ -0,0 +1,25 @@
1
+ 'use strict'
2
+
3
+ const API_URL = 'https://kick.com/api/v2/channels'
4
+
5
+ const getAvatarUrl = input => `${API_URL}/${encodeURIComponent(input)}`
6
+
7
+ const getAvatar = body => {
8
+ const pic = body?.user?.profile_pic
9
+ return typeof pic === 'string' && pic ? pic : undefined
10
+ }
11
+
12
+ module.exports = ({ got }) =>
13
+ async function kick (input) {
14
+ const { body, statusCode } = await got(getAvatarUrl(input), {
15
+ responseType: 'json',
16
+ throwHttpErrors: false
17
+ })
18
+
19
+ if (statusCode >= 400) return
20
+
21
+ return getAvatar(body)
22
+ }
23
+
24
+ module.exports.getAvatarUrl = getAvatarUrl
25
+ module.exports.getAvatar = getAvatar