Developer API
Everything the site does runs on this REST API. Base URL https://aviseek.vrchatlegends.com/api. JSON in, JSON out. Endpoints are rate limited per IP (search 120/min, submissions 10/min).
Personal, non-commercial use only. Using this API for profit, in any commercial product, or without permission is prohibited - see the Terms of Service.
Catalog
Public, unauthenticated. Responses are cached for up to 60 seconds. NSFW avatars and creator-hidden avatars are never returned.
GET/api/avatars/search
Search the index.
- q
- Free text over name, creator, description, and tags.
- author
- Filter by creator name or id (substring).
- tag
- Filter by a single tag.
- platform
- pc, quest, pc_only, quest_only, or cross (both).
- sort
- popular (default view count), recent, oldest, or name.
- limit / offset
- Paging. limit is capped at 60.
curl "https://aviseek.vrchatlegends.com/api/avatars/search?q=fox&platform=quest_only&sort=popular&limit=10"
{ "total": 132, "avatars": [{ "id": "avtr_...", "name": "...", "authorName": "...",
"imageUrl": "...", "tags": [...], "platforms": ["quest"], "views": 41, ... }],
"limit": 10, "offset": 0, "hasMore": true }GET/api/avatars/tags
Most common tags across listed avatars.
- limit
- Max 60, default 24.
curl "https://aviseek.vrchatlegends.com/api/avatars/tags?limit=10"
GET/api/avatars/trending
Most viewed listed avatars.
- limit
- Max 20, default 5.
curl "https://aviseek.vrchatlegends.com/api/avatars/trending?limit=5"
GET/api/avatars/popular-searches
Most typed search terms (anonymous counters).
curl "https://aviseek.vrchatlegends.com/api/avatars/popular-searches"
GET/api/avatars/:id
A single listed avatar.
curl "https://aviseek.vrchatlegends.com/api/avatars/avtr_00000000-0000-0000-0000-000000000000"
POST/api/avatars/submit
Queue an avatar id (or any URL containing one) for indexing.
curl -X POST "https://aviseek.vrchatlegends.com/api/avatars/submit" -H "Content-Type: application/json" -d '{"avatarId":"avtr_..."}'POST/api/avatars/impressions
Batched anonymous "shown in results" counters. Body: { ids: [avtr_...] } (max 60).
curl -X POST "https://aviseek.vrchatlegends.com/api/avatars/impressions" -H "Content-Type: application/json" -d '{"ids":["avtr_..."]}'POST/api/avatars/:id/track
Anonymous counter bump. Events: view, outbound.
curl -X POST "https://aviseek.vrchatlegends.com/api/avatars/avtr_.../track" -H "Content-Type: application/json" -d '{"event":"view"}'POST/api/avatars/:id/report
Report an avatar (abuse or creator removal request).
curl -X POST "https://aviseek.vrchatlegends.com/api/avatars/avtr_.../report" -H "Content-Type: application/json" -d '{"reason":"..."}'GET/api/stats
Index totals and fetch queue size.
GET/api/health
Liveness probe. Reports whether the VRChat fetcher is online.
VRChat Legends account
Cookie sessions backed by VRChat Legends OAuth (PKCE). Favorites require being signed in.
POST/api/auth/login
Sign in with VRChat Legends email + password. May return { next: "totp" | "email", ticket }.
POST/api/auth/login/code
Complete 2FA: { ticket, code, method }. Sets the session cookie.
POST/api/auth/login/resend
Resend the email sign-in code for a ticket.
GET/api/auth/me
Current session: { enabled, authenticated, user }.
POST/api/auth/logout
Destroys the session cookie.
GET/api/favorites
Your saved avatars: { ids, avatars }.
PUT/api/favorites/:id
Save an avatar.
DELETE/api/favorites/:id
Unsave an avatar.
GET/api/likes
Avatar ids you have liked.
PUT/api/likes/:id
Like an avatar - like counts are public on every card.
DELETE/api/likes/:id
Remove your like.
Creator Studio
VRCL session required. Avatar ownership is proven by the VRChat account verified on your VRChat Legends profile - AviSeek never asks for or handles VRChat credentials. Without a verified link these endpoints return 409 with code no_player or not_verified.
GET/api/creator/avatars
Your avatars in the AviSeek index with analytics: impressions, views, CTR, likes, favorites, plus a daily series (?days=7-90).
PUT/api/creator/avatars/:id/visibility
Unlist ({ "listed": false }) hides your avatar from all of AviSeek; { "listed": true } relists it.
Admin & sources
Import mirroring from public third-party indexes plus moderator tools. Admin endpoints need the X-Admin-Key header.
GET/api/sources
Import status: last run, per-source counts, schedule.
POST/api/sources/import
Control the importer. Body: { action: start|restart|stop }. Requires X-Admin-Key.
DELETE/api/avatars/:id
Moderator removal - permanent blocklist. Requires X-Admin-Key.
Play nice: cache responses where you can and keep a descriptive User-Agent. NSFW avatars, private avatars, and creator-removed avatars are excluded at the API layer and cannot be retrieved through any endpoint.