@unavatar/core 3.7.63 → 3.7.65
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 +148 -103
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
- [DuckDuckGo](#duckduckgo)
|
|
15
15
|
- [GitHub](#github)
|
|
16
16
|
- [GitLab](#gitlab)
|
|
17
|
+
- [LinkedIn](#linkedin)
|
|
17
18
|
- [Google](#google)
|
|
18
19
|
- [Gravatar](#gravatar)
|
|
19
20
|
- [Instagram](#instagram)
|
|
20
|
-
- [LinkedIn](#linkedin)
|
|
21
|
-
- [Mastodon](#mastodon)
|
|
22
21
|
- [Microlink](#microlink)
|
|
22
|
+
- [Mastodon](#mastodon)
|
|
23
23
|
- [OnlyFans](#onlyfans)
|
|
24
24
|
- [OpenStreetMap](#openstreetmap)
|
|
25
25
|
- [Patreon](#patreon)
|
|
@@ -45,13 +45,13 @@ Welcome to **unavatar.io**, the ultimate avatar service that offers everything y
|
|
|
45
45
|
|
|
46
46
|
- **Versatile**: A wide range of platforms and services including [TikTok](#tiktok), [Instagram](#instagram), [YouTube](#youtube), [X/Twitter](#xtwitter), [Gravatar](#gravatar), etc., meaning you can rule all of them just querying against unavatar.
|
|
47
47
|
|
|
48
|
-
- **Speed**: Designed to be fast and efficient
|
|
48
|
+
- **Speed**: Designed to be fast and efficient with a 97% cache hit rate, serving 24.3 TB of data across 522M requests.
|
|
49
49
|
|
|
50
50
|
- **Optimize**: All the images are not only compressed on-the-fly to reduce their size and save bandwith, but also optimized to maintain a high-quality ratio. They are ready for immediate use, enhancing the overall optimization of your website or application.
|
|
51
51
|
|
|
52
52
|
- **Integration**: The service seamlessly incorporates into your current applications or websites with ease. We offer straightforward documentation and comprehensive support to ensure a quick and effortless onboarding experience.
|
|
53
53
|
|
|
54
|
-
It's proudly powered by [microlink.io](https://microlink.io), the headless browser API that handles all the heavy lifting behind the scenes to ensure your avatars are always ready.
|
|
54
|
+
It's proudly powered by [microlink.io](https://microlink.io/), the headless browser API that handles all the heavy lifting behind the scenes to ensure your avatars are always ready.
|
|
55
55
|
|
|
56
56
|
## Quick start
|
|
57
57
|
|
|
@@ -67,8 +67,8 @@ Use the `/:provider/:key` format for all lookups. You can read more about availa
|
|
|
67
67
|
|
|
68
68
|
### TTL
|
|
69
69
|
|
|
70
|
-
Type: `number
|
|
71
|
-
Default: `'24h'`<br
|
|
70
|
+
Type: `number` or `string`<br>
|
|
71
|
+
Default: `'24h'`<br>
|
|
72
72
|
Range: from `'1h'` to `'28d'`
|
|
73
73
|
|
|
74
74
|
It determines the maximum quantity of time an avatar is considered fresh.
|
|
@@ -81,7 +81,7 @@ The same resource will continue to be used until reach TTL expiration. After tha
|
|
|
81
81
|
|
|
82
82
|
### Fallback
|
|
83
83
|
|
|
84
|
-
Type: `string
|
|
84
|
+
Type: `string` or `boolean`
|
|
85
85
|
|
|
86
86
|
When it can't be possible to get a user avatar, a fallback image is returned instead, and it can be personalized to fit better with your website or application style.
|
|
87
87
|
|
|
@@ -115,7 +115,7 @@ e.g., [unavatar.io/github/kikobeats?json](https://unavatar.io/github/kikobeats?j
|
|
|
115
115
|
|
|
116
116
|
## Pricing
|
|
117
117
|
|
|
118
|
-
The service is **FREE** for everyone, no registration required, with a daily rate limit of **50 requests** per IP address.
|
|
118
|
+
The service is **FREE** for everyone, no registration required, with a daily rate limit of **50 requests** per IP address.
|
|
119
119
|
|
|
120
120
|
For preventing abusive usage, the service has associated a daily rate limit based on requests IP address.
|
|
121
121
|
|
|
@@ -125,25 +125,23 @@ You can verify for your rate limit state checking the following headers in the r
|
|
|
125
125
|
- `x-rate-limit-remaining`: The number of requests remaining in the current rate limit window.
|
|
126
126
|
- `x-rate-limit-reset`: The time at which the current rate limit window resets in UTC epoch seconds.
|
|
127
127
|
|
|
128
|
-
For higher usage, the
|
|
128
|
+
For higher usage, the plan is a usage-based plan billed monthly that removes rate limits and unlocks custom TTL.
|
|
129
129
|
|
|
130
|
-
Every request has a cost in tokens (
|
|
130
|
+
Every request has a cost in tokens (**\$0.001 per token**) based on the proxy tier needed to resolve the avatar:
|
|
131
131
|
|
|
132
|
-
| Proxy tier | Tokens |
|
|
133
|
-
|
|
134
|
-
| Origin |
|
|
135
|
-
| Datacenter |
|
|
136
|
-
| Residential |
|
|
132
|
+
| Proxy tier | Tokens | Cost |
|
|
133
|
+
|-------------|--------|---------|
|
|
134
|
+
| Origin | 1 | \$0.001 |
|
|
135
|
+
| Datacenter | +2 | \$0.003 |
|
|
136
|
+
| Residential | +4 | \$0.007 |
|
|
137
137
|
|
|
138
138
|
The proxy tier used is returned in the `x-proxy-tier` response header, and the total cost in the `x-unavatar-cost` header.
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
$ curl -I -H "x-api-key: YOUR_API_KEY" https://unavatar.io/instagram/kikobeats
|
|
140
|
+
$ curl -I -H "x-api-key: YOUR_API_KEY" https://unavatar.io/instagram/kikobeats
|
|
142
141
|
|
|
143
|
-
x-pricing-tier: pro
|
|
144
|
-
x-proxy-tier: origin
|
|
145
|
-
x-unavatar-cost: 1
|
|
146
|
-
```
|
|
142
|
+
x-pricing-tier: pro
|
|
143
|
+
x-proxy-tier: origin
|
|
144
|
+
x-unavatar-cost: 1
|
|
147
145
|
|
|
148
146
|
To upgrade, visit [unavatar.io/checkout](https://unavatar.io/checkout). After completing the payment, you'll receive an API key.
|
|
149
147
|
|
|
@@ -151,19 +149,19 @@ To upgrade, visit [unavatar.io/checkout](https://unavatar.io/checkout). After co
|
|
|
151
149
|
|
|
152
150
|
### Apple Music
|
|
153
151
|
|
|
154
|
-
|
|
152
|
+
Get artwork for any Apple Music artist, album, or song. Search by name or look up directly by numeric Apple Music ID.
|
|
155
153
|
|
|
156
154
|
e.g., [unavatar.io/apple-music/daft%20punk](https://unavatar.io/apple-music/daft%20punk)
|
|
157
155
|
|
|
158
|
-
The endpoint supports
|
|
156
|
+
The endpoint supports explicit type as part of the input.
|
|
159
157
|
|
|
160
158
|
If explicit type is not provided, it searches `artist` and `song` (in that order).
|
|
161
159
|
|
|
162
|
-
Available
|
|
160
|
+
Available URI format inputs:
|
|
163
161
|
|
|
164
162
|
- artist
|
|
165
|
-
-
|
|
166
|
-
-
|
|
163
|
+
- by artist name: [unavatar.io/apple-music/artist:daft%20punk](https://unavatar.io/apple-music/artist:daft%20punk)
|
|
164
|
+
- by numeric artist ID: [unavatar.io/apple-music/artist:5468295](https://unavatar.io/apple-music/artist:5468295)
|
|
167
165
|
- album
|
|
168
166
|
- by album name: [unavatar.io/apple-music/album:discovery](https://unavatar.io/apple-music/album:discovery)
|
|
169
167
|
- by album ID: [unavatar.io/apple-music/album:78691923](https://unavatar.io/apple-music/album:78691923)
|
|
@@ -173,122 +171,155 @@ Available types:
|
|
|
173
171
|
|
|
174
172
|
### Bluesky
|
|
175
173
|
|
|
176
|
-
|
|
174
|
+
Get any Bluesky user's profile picture by their handle. Domain-style handles are supported.
|
|
177
175
|
|
|
178
|
-
|
|
176
|
+
Available inputs:
|
|
177
|
+
|
|
178
|
+
- User handle, e.g., [unavatar.io/bluesky/pfrazee.com](https://unavatar.io/bluesky/pfrazee.com)
|
|
179
|
+
- Domain handle, e.g., [unavatar.io/bluesky/bsky.app](https://unavatar.io/bluesky/bsky.app)
|
|
179
180
|
|
|
180
181
|
### DeviantArt
|
|
181
182
|
|
|
182
|
-
|
|
183
|
+
Get any DeviantArt user's profile picture by their username.
|
|
184
|
+
|
|
185
|
+
Available inputs:
|
|
183
186
|
|
|
184
|
-
e.g., [unavatar.io/deviantart/spyed](https://unavatar.io/deviantart/spyed)
|
|
187
|
+
- Username, e.g., [unavatar.io/deviantart/spyed](https://unavatar.io/deviantart/spyed)
|
|
185
188
|
|
|
186
189
|
### Dribbble
|
|
187
190
|
|
|
188
|
-
|
|
191
|
+
Get any Dribbble designer's profile picture by their username.
|
|
189
192
|
|
|
190
|
-
|
|
193
|
+
Available inputs:
|
|
194
|
+
|
|
195
|
+
- Username, e.g., [unavatar.io/dribbble/omidnikrah](https://unavatar.io/dribbble/omidnikrah)
|
|
191
196
|
|
|
192
197
|
### DuckDuckGo
|
|
193
198
|
|
|
194
|
-
|
|
199
|
+
Get the favicon or logo for any domain via DuckDuckGo's icon service. Useful as a fallback when a domain doesn't expose its favicon directly.
|
|
200
|
+
|
|
201
|
+
Available inputs:
|
|
195
202
|
|
|
196
|
-
e.g., [unavatar.io/duckduckgo/gummibeer.dev](https://unavatar.io/duckduckgo/gummibeer.dev)
|
|
203
|
+
- Domain, e.g., [unavatar.io/duckduckgo/gummibeer.dev](https://unavatar.io/duckduckgo/gummibeer.dev)
|
|
197
204
|
|
|
198
205
|
### GitHub
|
|
199
206
|
|
|
200
|
-
|
|
207
|
+
Get any GitHub user or organization's profile picture by their username.
|
|
201
208
|
|
|
202
|
-
|
|
209
|
+
Available inputs:
|
|
210
|
+
|
|
211
|
+
- User, e.g., [unavatar.io/github/mdo](https://unavatar.io/github/mdo)
|
|
212
|
+
- Organization, e.g., [unavatar.io/github/vercel](https://unavatar.io/github/vercel)
|
|
203
213
|
|
|
204
214
|
### GitLab
|
|
205
215
|
|
|
206
|
-
|
|
216
|
+
Get any GitLab user or group's profile picture by their username.
|
|
207
217
|
|
|
208
|
-
|
|
218
|
+
Available inputs:
|
|
219
|
+
|
|
220
|
+
- User, e.g., [unavatar.io/gitlab/sytses](https://unavatar.io/gitlab/sytses)
|
|
221
|
+
- Group, e.g., [unavatar.io/gitlab/inkscape](https://unavatar.io/gitlab/inkscape)
|
|
222
|
+
|
|
223
|
+
### LinkedIn
|
|
224
|
+
|
|
225
|
+
Get any LinkedIn user's profile picture by their public profile slug.
|
|
226
|
+
|
|
227
|
+
Available inputs:
|
|
228
|
+
|
|
229
|
+
- Profile slug, e.g., [unavatar.io/linkedin/kikobeats](https://unavatar.io/linkedin/kikobeats)
|
|
209
230
|
|
|
210
231
|
### Google
|
|
211
232
|
|
|
212
|
-
|
|
233
|
+
Get the favicon or logo for any domain using Google's favicon service.
|
|
213
234
|
|
|
214
|
-
|
|
235
|
+
Available inputs:
|
|
236
|
+
|
|
237
|
+
- Domain, e.g., [unavatar.io/google/netflix.com](https://unavatar.io/google/netflix.com)
|
|
215
238
|
|
|
216
239
|
### Gravatar
|
|
217
240
|
|
|
218
|
-
|
|
241
|
+
Get any user's avatar by their email address via Gravatar. The most widely used global avatar service — if your users have a Gravatar set up, this is the fastest way to retrieve it.
|
|
219
242
|
|
|
220
|
-
|
|
243
|
+
Available inputs:
|
|
221
244
|
|
|
222
|
-
|
|
245
|
+
- Email address, e.g., [unavatar.io/gravatar/hello@microlink.io](https://unavatar.io/gravatar/hello@microlink.io)
|
|
223
246
|
|
|
224
|
-
|
|
247
|
+
### Instagram
|
|
225
248
|
|
|
226
|
-
|
|
249
|
+
Get any Instagram user's profile picture by their username. No authentication or API tokens needed — just pass the username.
|
|
227
250
|
|
|
228
|
-
|
|
251
|
+
Available inputs:
|
|
229
252
|
|
|
230
|
-
|
|
253
|
+
- Username, e.g., [unavatar.io/instagram/willsmith](https://unavatar.io/instagram/willsmith)
|
|
231
254
|
|
|
232
|
-
|
|
255
|
+
### Microlink
|
|
233
256
|
|
|
234
|
-
|
|
257
|
+
Extract the logo or representative image from any URL. The page is rendered and the best available image is selected — useful for getting brand logos from any website.
|
|
235
258
|
|
|
236
|
-
|
|
259
|
+
Available inputs:
|
|
237
260
|
|
|
238
|
-
|
|
261
|
+
- Domain, e.g., [unavatar.io/microlink/microlink.io](https://unavatar.io/microlink/microlink.io)
|
|
239
262
|
|
|
240
|
-
|
|
263
|
+
### Mastodon
|
|
241
264
|
|
|
242
|
-
|
|
265
|
+
Get any Mastodon user's profile picture from any instance using the public account lookup API. Pass the handle as `user@server` so the account resolves on the correct home instance.
|
|
243
266
|
|
|
244
|
-
|
|
267
|
+
Available inputs:
|
|
245
268
|
|
|
246
|
-
e.g., [unavatar.io/
|
|
269
|
+
- user@server, e.g., [unavatar.io/mastodon/kpwags@hachyderm.io](https://unavatar.io/mastodon/kpwags@hachyderm.io)
|
|
247
270
|
|
|
248
271
|
### OnlyFans
|
|
249
272
|
|
|
250
|
-
|
|
273
|
+
Get any OnlyFans creator's profile picture by their username.
|
|
274
|
+
|
|
275
|
+
Available inputs:
|
|
251
276
|
|
|
252
|
-
e.g., [unavatar.io/onlyfans/amandaribas](https://unavatar.io/onlyfans/amandaribas)
|
|
277
|
+
- Username, e.g., [unavatar.io/onlyfans/amandaribas](https://unavatar.io/onlyfans/amandaribas)
|
|
253
278
|
|
|
254
279
|
### OpenStreetMap
|
|
255
280
|
|
|
256
|
-
|
|
281
|
+
Get any OpenStreetMap contributor's profile picture. Accepts either a numeric user ID or a username.
|
|
257
282
|
|
|
258
|
-
|
|
283
|
+
Available inputs:
|
|
259
284
|
|
|
260
285
|
- Numeric user ID, e.g., [unavatar.io/openstreetmap/98672](https://unavatar.io/openstreetmap/98672)
|
|
261
|
-
- Username e.g., [unavatar.io/openstreetmap/Terence%20Eden](https://unavatar.io/openstreetmap/Terence%20Eden)
|
|
286
|
+
- Username, e.g., [unavatar.io/openstreetmap/Terence%20Eden](https://unavatar.io/openstreetmap/Terence%20Eden)
|
|
262
287
|
|
|
263
288
|
### Patreon
|
|
264
289
|
|
|
265
|
-
|
|
290
|
+
Get any Patreon creator's profile picture by their username.
|
|
291
|
+
|
|
292
|
+
Available inputs:
|
|
266
293
|
|
|
267
|
-
e.g., [unavatar.io/patreon/kikobeats](https://unavatar.io/patreon/kikobeats)
|
|
294
|
+
- Username, e.g., [unavatar.io/patreon/kikobeats](https://unavatar.io/patreon/kikobeats)
|
|
268
295
|
|
|
269
296
|
### Reddit
|
|
270
297
|
|
|
271
|
-
|
|
298
|
+
Get any Reddit user's avatar by their username.
|
|
272
299
|
|
|
273
|
-
|
|
300
|
+
Available inputs:
|
|
301
|
+
|
|
302
|
+
- Username, e.g., [unavatar.io/reddit/kikobeats](https://unavatar.io/reddit/kikobeats)
|
|
274
303
|
|
|
275
304
|
### SoundCloud
|
|
276
305
|
|
|
277
|
-
|
|
306
|
+
Get any SoundCloud artist's profile picture by their username.
|
|
307
|
+
|
|
308
|
+
Available inputs:
|
|
278
309
|
|
|
279
|
-
e.g., [unavatar.io/soundcloud/gorillaz](https://unavatar.io/soundcloud/gorillaz)
|
|
310
|
+
- Username, e.g., [unavatar.io/soundcloud/gorillaz](https://unavatar.io/soundcloud/gorillaz)
|
|
280
311
|
|
|
281
312
|
### Spotify
|
|
282
313
|
|
|
283
|
-
|
|
314
|
+
Get artwork for any Spotify entity — users, artists, albums, playlists, shows, episodes, or tracks. Look up by username or Spotify ID.
|
|
284
315
|
|
|
285
316
|
e.g., [unavatar.io/spotify/kikobeats](https://unavatar.io/spotify/kikobeats)
|
|
286
317
|
|
|
287
|
-
The endpoint supports
|
|
318
|
+
The endpoint supports explicit type as part of the input.
|
|
288
319
|
|
|
289
320
|
If explicit type is not provided, it defaults to `user`.
|
|
290
321
|
|
|
291
|
-
Available
|
|
322
|
+
Available URI format inputs:
|
|
292
323
|
|
|
293
324
|
- `user`: [unavatar.io/spotify/kikobeats](https://unavatar.io/spotify/kikobeats)
|
|
294
325
|
- `artist`: [unavatar.io/spotify/artist:6sFIWsNpZYqbRiDnNOkZCA](https://unavatar.io/spotify/artist:6sFIWsNpZYqbRiDnNOkZCA)
|
|
@@ -300,40 +331,52 @@ Available types:
|
|
|
300
331
|
|
|
301
332
|
### Substack
|
|
302
333
|
|
|
303
|
-
|
|
334
|
+
Get any Substack author's profile picture by their publication username.
|
|
335
|
+
|
|
336
|
+
Available inputs:
|
|
304
337
|
|
|
305
|
-
e.g., [unavatar.io/substack/bankless](https://unavatar.io/substack/bankless)
|
|
338
|
+
- Publication username, e.g., [unavatar.io/substack/bankless](https://unavatar.io/substack/bankless)
|
|
306
339
|
|
|
307
340
|
### Telegram
|
|
308
341
|
|
|
309
|
-
|
|
342
|
+
Get any Telegram user's profile picture by their username.
|
|
310
343
|
|
|
311
|
-
|
|
344
|
+
Available inputs:
|
|
345
|
+
|
|
346
|
+
- Username, e.g., [unavatar.io/telegram/drsdavidsoft](https://unavatar.io/telegram/drsdavidsoft)
|
|
312
347
|
|
|
313
348
|
### TikTok
|
|
314
349
|
|
|
315
|
-
|
|
350
|
+
Get any TikTok user's profile picture by their username. No authentication or API tokens needed — just pass the username.
|
|
351
|
+
|
|
352
|
+
Available inputs:
|
|
316
353
|
|
|
317
|
-
e.g., [unavatar.io/tiktok/carlosazaustre](https://unavatar.io/tiktok/carlosazaustre)
|
|
354
|
+
- Username, e.g., [unavatar.io/tiktok/carlosazaustre](https://unavatar.io/tiktok/carlosazaustre)
|
|
318
355
|
|
|
319
356
|
### Twitch
|
|
320
357
|
|
|
321
|
-
|
|
358
|
+
Get any Twitch streamer's profile picture by their username.
|
|
322
359
|
|
|
323
|
-
|
|
360
|
+
Available inputs:
|
|
361
|
+
|
|
362
|
+
- Username, e.g., [unavatar.io/twitch/midudev](https://unavatar.io/twitch/midudev)
|
|
324
363
|
|
|
325
364
|
### Vimeo
|
|
326
365
|
|
|
327
|
-
|
|
366
|
+
Get any Vimeo user's profile picture by their username.
|
|
367
|
+
|
|
368
|
+
Available inputs:
|
|
328
369
|
|
|
329
|
-
e.g., [unavatar.io/vimeo/staff](https://unavatar.io/vimeo/staff)
|
|
370
|
+
- Username, e.g., [unavatar.io/vimeo/staff](https://unavatar.io/vimeo/staff)
|
|
330
371
|
|
|
331
372
|
### WhatsApp
|
|
332
373
|
|
|
333
|
-
|
|
374
|
+
Get the profile picture for a WhatsApp phone number, channel, chat, or group.
|
|
334
375
|
|
|
335
376
|
The input supports a URI format `type:id`. When no type is provided, it defaults to `phone`.
|
|
336
377
|
|
|
378
|
+
Available URI format inputs:
|
|
379
|
+
|
|
337
380
|
- `phone` (default): [unavatar.io/whatsapp/34612345678](https://unavatar.io/whatsapp/34612345678)
|
|
338
381
|
- `channel`: [unavatar.io/whatsapp/channel:0029VaABC1234abcDEF56789](https://unavatar.io/whatsapp/channel:0029VaABC1234abcDEF56789)
|
|
339
382
|
- `chat`: [unavatar.io/whatsapp/chat:ABC1234DEFghi](https://unavatar.io/whatsapp/chat:ABC1234DEFghi)
|
|
@@ -341,13 +384,15 @@ The input supports a URI format `type:id`. When no type is provided, it defaults
|
|
|
341
384
|
|
|
342
385
|
### X/Twitter
|
|
343
386
|
|
|
344
|
-
|
|
387
|
+
Get any X (formerly Twitter) user's profile picture by their username.
|
|
388
|
+
|
|
389
|
+
Available inputs:
|
|
345
390
|
|
|
346
|
-
e.g., [unavatar.io/x/kikobeats](https://unavatar.io/x/kikobeats)
|
|
391
|
+
- Username, e.g., [unavatar.io/x/kikobeats](https://unavatar.io/x/kikobeats)
|
|
347
392
|
|
|
348
393
|
### YouTube
|
|
349
394
|
|
|
350
|
-
|
|
395
|
+
Get any YouTube channel's thumbnail by their handle, legacy username, or channel ID.
|
|
351
396
|
|
|
352
397
|
e.g., [unavatar.io/youtube/casey](https://unavatar.io/youtube/casey)
|
|
353
398
|
|
|
@@ -368,29 +413,29 @@ However, you can get a [json](#json) as response payload.
|
|
|
368
413
|
|
|
369
414
|
When an endpoint returns JSON, the shape is predictable so you can parse it reliably in your app:
|
|
370
415
|
|
|
371
|
-
| Field
|
|
372
|
-
|
|
373
|
-
| `status`
|
|
374
|
-
| `message` | `string`
|
|
375
|
-
| `data`
|
|
376
|
-
| `code`
|
|
377
|
-
| `more`
|
|
378
|
-
| `report`
|
|
416
|
+
| Field | Type | Present in | Description |
|
|
417
|
+
|----|----|----|----|
|
|
418
|
+
| `status` | `string` | all JSON responses | One of: `success`, `fail`, `error`. |
|
|
419
|
+
| `message` | `string` | all JSON responses | Human-readable summary for display/logging. |
|
|
420
|
+
| `data` | `object` | `success` | Response payload for successful requests. |
|
|
421
|
+
| `code` | `string` | `fail`, `error` | Stable machine-readable error code. |
|
|
422
|
+
| `more` | `string (URL)` | most `fail`/`error` responses | Documentation URL with troubleshooting details. |
|
|
423
|
+
| `report` | `string` | some `error` responses | Support contact channel (for example `mailto:`). |
|
|
379
424
|
|
|
380
425
|
## Response Headers
|
|
381
426
|
|
|
382
427
|
These headers help you understand pricing, limits, and request diagnostics.
|
|
383
428
|
|
|
384
|
-
| Header
|
|
385
|
-
|
|
386
|
-
| `x-pricing-tier`
|
|
387
|
-
| `x-timestamp`
|
|
388
|
-
| `x-unavatar-cost`
|
|
389
|
-
| `x-proxy-tier`
|
|
390
|
-
| `x-rate-limit-limit`
|
|
391
|
-
| `x-rate-limit-remaining` | Remaining requests in current window (free tier only)
|
|
392
|
-
| `x-rate-limit-reset`
|
|
393
|
-
| `retry-after`
|
|
429
|
+
| Header | Purpose |
|
|
430
|
+
|----|----|
|
|
431
|
+
| `x-pricing-tier` | `free` or `pro` — the plan used for this request |
|
|
432
|
+
| `x-timestamp` | Server timestamp when request was received |
|
|
433
|
+
| `x-unavatar-cost` | Token cost of the request (avatar routes only) |
|
|
434
|
+
| `x-proxy-tier` | Proxy tier used: `origin`, `datacenter`, or `residential` |
|
|
435
|
+
| `x-rate-limit-limit` | Maximum requests allowed per window (free tier only) |
|
|
436
|
+
| `x-rate-limit-remaining` | Remaining requests in current window (free tier only) |
|
|
437
|
+
| `x-rate-limit-reset` | UTC epoch seconds when window resets (free tier only) |
|
|
438
|
+
| `retry-after` | Seconds until rate limit resets (only on 429 responses) |
|
|
394
439
|
|
|
395
440
|
## Response Errors
|
|
396
441
|
|
|
@@ -405,7 +450,7 @@ Expected errors are known operational cases returned with stable codes.
|
|
|
405
450
|
- `report` (when present) indicates how to contact support for server errors.
|
|
406
451
|
|
|
407
452
|
| HTTP | Code | Typical trigger |
|
|
408
|
-
|
|
453
|
+
|------|----------------------|---------------------------------------------|
|
|
409
454
|
| 400 | `ESESSIONID` | Missing `session_id` in `/checkout/success` |
|
|
410
455
|
| 400 | `ESESSION` | Checkout session not paid or not found |
|
|
411
456
|
| 400 | `ESIGNATURE` | Missing `stripe-signature` header |
|
|
@@ -429,4 +474,4 @@ Expected errors are known operational cases returned with stable codes.
|
|
|
429
474
|
|
|
430
475
|
## Contact
|
|
431
476
|
|
|
432
|
-
If you have any suggestion or bug to report, please contact to ust mailing to hello@unavatar.io.
|
|
477
|
+
If you have any suggestion or bug to report, please contact to ust mailing to [hello@unavatar.io](mailto:hello@unavatar.io).
|
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.7.
|
|
5
|
+
"version": "3.7.65",
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./src/index.js",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"@keyvhq/multi": "~2.1.15",
|
|
122
122
|
"@keyvhq/offline": "~2.2.0",
|
|
123
123
|
"@keyvhq/redis": "~2.1.15",
|
|
124
|
-
"@metascraper/helpers": "~5.
|
|
124
|
+
"@metascraper/helpers": "~5.50.0",
|
|
125
125
|
"@microlink/mql": "~0.15.1",
|
|
126
126
|
"@microlink/ping-url": "~1.4.16",
|
|
127
127
|
"browserless": "~10.12.0",
|