Retrieve user avatars from 20+ platforms (GitHub, X/Twitter, Instagram, Gravatar, etc.) via unavatar.io. Use when the user mentions unavatar, avatar retrieval, profile pictures, user avatars, or needs to resolve avatars by email, username, domain, or phone number.
Resources
1Install
npx skillscat add microlinkhq/skills/unavatar-api Install via the SkillsCat registry.
unavatar API
unavatar.io resolves user avatars from 20+ platforms via a single endpoint. Supports lookup by email, username, domain, or phone number.
Endpoint
https://unavatar.io
Quick Start
Resolve avatars by input type:
| Input | Pattern | Example |
|---|---|---|
/provider/user@example.com |
https://unavatar.io/gravatar/user@example.com |
|
| username | /provider/username |
https://unavatar.io/github/kikobeats |
| domain | /domain.com |
https://unavatar.io/microlink.io |
| phone | /provider/phonenumber |
https://unavatar.io/whatsapp/34688638289 |
Without a provider prefix, unavatar auto-resolves using all matching providers and returns the fastest successful result.
Authentication
- Free: No auth required, 50 requests/day per IP
- Pro: Pass
x-api-keyheader, usage-based billing at $0.001/token
curl -H "x-api-key: YOUR_API_KEY" https://unavatar.io/instagram/kikobeatsProxy Tiers & Token Cost
| Proxy tier | Tokens | Cost |
|---|---|---|
| Origin | 1 | $0.001 |
| Datacenter | +2 | $0.003 |
| Residential | +4 | $0.007 |
Response headers: x-proxy-tier, x-unavatar-cost, x-pricing-tier.
Key Management
- Usage:
curl -H "x-api-key: KEY" https://unavatar.io/key/usage - Rotate:
curl -H "x-api-key: KEY" https://unavatar.io/key/rotate
Query Parameters
ttl
- Type:
number|string - Default:
'24h' - Range:
'1h'to'28d'
Cache duration for the resolved avatar. The avatar is considered fresh until TTL expiration, then recomputed on next request.
e.g., https://unavatar.io/kikobeats?ttl=1h
fallback
- Type:
string|boolean
Custom fallback image when avatar can't be resolved. Accepts:
- URL to external avatar service (boringavatars.com, avatar.vercel.sh)
- URL to static image
- Base64 encoded image (e.g., transparent 1x1 pixel GIF)
falseto disable fallback (returns 404 instead)
https://unavatar.io/github/37t?fallback=https://avatar.vercel.sh/37t?size=400
https://unavatar.io/github/37t?fallback=false
https://unavatar.io/github/37t?fallback=data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==json
- Type:
boolean
Returns JSON payload instead of image content.
e.g., https://unavatar.io/kikobeats?json
Rate Limiting
Response headers:
x-rate-limit-limit: Max requests per windowx-rate-limit-remaining: Remaining requestsx-rate-limit-reset: Reset time (UTC epoch seconds)
HTTP 429 when limit exceeded.
Providers
Providers are grouped by input type. When no specific provider is given, all matching providers race and the fastest successful result wins.
| Provider | username | domain | phone | |
|---|---|---|---|---|
| Bluesky | ✓ | |||
| DeviantArt | ✓ | |||
| Dribbble | ✓ | |||
| DuckDuckGo | ✓ | |||
| GitHub | ✓ | |||
| GitLab | ✓ | |||
| ✓ | ||||
| Gravatar | ✓ | |||
| ✓ | ||||
| Microlink | ✓ | |||
| OnlyFans | ✓ | |||
| ✓ | ||||
| SoundCloud | ✓ | |||
| Spotify | ✓ | |||
| Substack | ✓ | |||
| Telegram | ✓ | |||
| TikTok | ✓ | |||
| Twitch | ✓ | |||
| Vimeo | ✓ | |||
| ✓ | ||||
| X/Twitter | ✓ | |||
| YouTube | ✓ |
URI Format Providers
Spotify supports type:id format (default type: user):
user:/spotify/kikobeatsartist:/spotify/artist:6sFIWsNpZYqbRiDnNOkZCAplaylist:/spotify/playlist:37i9dQZF1DXcBWIGoYBM5Malbum:/spotify/album:4aawyAB9vmqN3uQ7FjRGTyshow:/spotify/show:6UCtBYL29hRg064d4i5W2iepisode:/spotify/episode:512ojhOuo1ktJprKbVcKyQtrack:/spotify/track:11dFghVXANMlKmJXsNCbNl
WhatsApp supports type:id format (default type: phone):
phone:/whatsapp/34612345678channel:/whatsapp/channel:0029VaABC1234abcDEF56789chat:/whatsapp/chat:ABC1234DEFghigroup:/whatsapp/group:ABC1234DEFghi
For individual provider examples, see providers.md.