HabboAssets
API
Login

API

v2

One API for the whole archive: badges, furniture, clothing, client builds, sounds, images and gamedata, for every hotel — and Habbo Origins. Most endpoints are public (240 requests a minute); the furniture endpoints need a free API token.

Base URL

https://www.habboassets.com/api/v2

Authentication & hotels

Furniture endpoints need a token — create one under your account's API tokens and send it in the Authorization header. Hotel-specific data is chosen with X-Hotel-ID (defaults to 1, Habbo.com).

Authorization: Bearer YOUR_TOKEN (furniture only)
X-Hotel-ID: {hotel_id} (defaults to 1)
Accept: application/json

Hotels

IDNameDomainLangShort
1Habbo.comhabbo.comen.COM
2Habbo Brasilhabbo.com.brpt.COM.BR
3Habbo Españahabbo.eses.ES
4Habbo Finlandhabbo.fifi.FI
5Habbo Francehabbo.frfr.FR
6Habbo Germanyhabbo.dede.DE
7Habbo Italiahabbo.itit.IT
8Habbo Nederlandhabbo.nlnl.NL
9Habbo Türkiyehabbo.com.trtr.COM.TR
10Habbo Sandboxsandbox.habbo.comenSandbox

Public endpoints

GET/hotelsEvery hotel the archive tracks
GET/badgesBadges, newest first
term — search code or name
hotel — a domain suffix ('com', 'com.br', …, 'sandbox') or 'all' — or send X-Hotel-ID
limit / offset — page size (max 2,000) and offset
order — 'desc' (default) or 'asc'
GET/badges/{code}One badge: images + name/description in every hotel's language
GET/badges/zipBadge images as a ZIP
hotel_id — hotel (default 1)
codes — comma-separated codes — omit for every badge of the hotel
format — 'gif' (original, default) or 'png'
GET/furniture/zipFurniture files as a ZIP
classnames — comma-separated classnames (max 100)
format — 'swf' (original, default), 'nitro' or 'both'
hotel_id — prefer this hotel's copy (default 1)
GET/feedChange feed since 2019
category — furniture | badges | clothing | client | media
page / per_page — pagination (max 100)
GET/gamedataExternal texts / variables
type — texts | variables
search — match key or value
sort — new | changed | key
page / per_page — pagination (max 500)
GET/soundsTrax samples with durations
GET/swfs/buildsFlash client builds and the hotels that ran them
search — filter by build name
GET/swfs/builds/{name}/downloadFull build pack (every SWF + gamedata) as a ZIP
GET/swfs/librariesClothing / effect / pet libraries
kind — clothing | effect | pet
search — filter by library name
GET/swfs/libraries/{kind}/{name}Every revision of a library, with previews and downloads
GET/imagesArchived images
kind — catalog | furnicons | clientpromo | featurecata | dump | webpromo
GET/statsArchive counts

Furniture (token required)

GET/furnitureList furniture
search — name, classname or description
category / type / revision — filters ('room' or 'wall' for type)
new / updated — 1 = first seen / changed in the last `days` (default 3)
sort — newest | changed | name (default: name; newest with new=1, changed with updated=1)
per_page / page — pagination (max 100)
GET/furniture/{classname}One item: furnidata, SWF data, previews, .nitro, revision history
GET/furniture/categoriesCategories in the selected hotel
GET/furniture/typesTypes in the selected hotel

Habbo Origins

The Shockwave hotel — public, no token. Items use Origins' own classnames (colour variants as base*N), drawn from the current client build. Each has its renders, inventory icon (named as Nitro expects), a .nitro bundle (beta) holding every colour of its art, and the catalogue offer last seen in-game. catalogueis null for items never seen in the catalogue; Origins has no furnidata, so sit / walk / lay flags and interaction types aren't known. To keep a housekeeping in sync, poll /origins/furniture/export (it changes when a client build or catalogue sighting lands; cached for 10 minutes) and match on classname. To use your own classnames, download through /nitro?name= or /origins/zip: the bundle is renamed inside too (its JSON, asset and sprite names), the same as renaming on the site.

GET/origins/furnitureOrigins furni, paginated
search — name or classname
kind — floor | wall | poster
graphics — 1 = only items with art in the client
sort — name (default) | newest
per_page / page — pagination (max 100)
GET/origins/furniture/exportEvery Origins item in one response, with its catalogue offer — for imports and syncs
kind — floor | wall | poster
graphics — 1 = only items with art in the client
GET/origins/furniture/{classname}One item: renders, icon, .nitro, dimensions, directions, states, catalogue offer, colour variants
GET/origins/furniture/{classname}/nitroThe item's .nitro under your own classname — the file and every name inside it
name — your classname (letters, digits, _; max 100) — omit for the Origins one
GET/origins/zipSeveral items as one ZIP: each .nitro + icons/<name>[_<n>]_icon.png for every colour, renamed (10 a minute)
classnames — comma-separated (max 100); colour variants share their item's bundle
prefix — put in front of every classname, e.g. og_ → og_rare_dragonlamp
names — or your own classnames, comma-separated in classnames order
GET/origins/filesThe .nitro and every colour's icon for a set of items (Origins names)
classnames — comma-separated (max 100)
GET/origins/onlinePlayers online per Origins hotel
range — 24h (per minute) | 7d | 30d (hourly peak) | 1y | all (daily peak, default)
GET/origins/clientsEvery Origins client build since June 2024, with download links

Example

# Your own classnames: one item, or many at once with a prefix
curl -o og_dragonlamp.nitro "https://www.habboassets.com/api/v2/origins/furniture/rare_dragonlamp/nitro?name=og_dragonlamp"
curl -o origins.zip "https://www.habboassets.com/api/v2/origins/zip?classnames=rare_dragonlamp,chair_plasto&prefix=og_"

# Everything, for a sync
curl "https://www.habboassets.com/api/v2/origins/furniture/export?graphics=1"

{
  "data": [
    {
      "classname": "rare_dragonlamp*4",
      "base": "rare_dragonlamp",
      "kind": "floor",
      "name": "Serpent of Doom",
      "description": "Scary and scorching!",
      "build": "369",
      "icon": "https://cdn.habboassets.com/derived/origins/furni/369/rare_dragonlamp/colours/rare_dragonlamp_4_icon.png",
      "preview": "https://cdn.habboassets.com/derived/origins/furni/369/rare_dragonlamp/colours/rare_dragonlamp_4.png",
      "nitro": "https://cdn.habboassets.com/derived/origins/furni/369/rare_dragonlamp/rare_dragonlamp.nitro",
      "dimensions": { "x": 1, "y": 1 },
      "directions": [2, 4],
      "states": 2,
      "colors": ["#FFFFFF", "#3E3D40", "#3E3D40", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF"],
      "catalogue": null,
      …
    }
  ],
  "meta": { "total": 3422 }
}

Imager (embeddable images)

https://www.habboassets.com/imaging/…

Furniture, clothing and avatars as images, by name — public, no token, on the site host (not under /api/v2). Put the URL straight into an <img>. Rendered images are cached and unlimited; renders that aren't cached yet are limited to 60 a minute per IP (429 with Retry-After). Errors come back as {"error": "…"} with a 4xx status. Build URLs with the Imager.

GET/imaging/furniture/{classname}.pngRendered furni (PNG)
revision — SWF revision — omit for the latest: 302 to the pinned URL (cached 10 min); pinned images never change
direction — 0–7 (default: the item's preview direction; one it lacks falls back to 0)
color — colour id — or *N in the classname, e.g. rare_dragonlamp*4
size — 64 (default) or 32
state — animation state, e.g. 1 = a lamp switched on (default 0)
GET/imaging/clothing/{library}.pngA clothing set on the grey ghost figure (PNG / APNG)
set — figure set id in the library (default: its first set)
revision — library revision — omit for the latest (302 pinning revision and set)
direction — 0–7 (default 2)
animated — 1 = animated PNG (APNG, 6 fps) for animated sets; a still PNG otherwise
GET/imaging/clothing/set/{setId}.pngThe same by figure set id (302 to its library)
GET/imaging/avatar.pngAvatar from a figure string (PNG, standing pose)
figure — required — type-set-colour parts joined by dots (max 512 characters); unknown sets or colours → 400
direction / head_direction — 0–7 (default 2 / the body direction)
size — n = 64×110 (default) or l = 128×220
frame — animation tick (0–23) for animated clothing
GET/imaging/searchName suggestions (JSON)
type / q — furniture | clothing, and the text to match (a set id finds its library)
GET/imaging/info/furniture/{classname}Revisions, directions, colours and states (JSON)
GET/imaging/info/clothing/{library}Revisions and their sets (JSON)

Examples

https://www.habboassets.com/imaging/furniture/throne.png?revision=45512&direction=4
https://www.habboassets.com/imaging/furniture/rare_dragonlamp*4.png?state=1
https://www.habboassets.com/imaging/clothing/set/6370.png?direction=3&animated=1
https://www.habboassets.com/imaging/avatar.png?figure=hd-180-1.ch-210-66.lg-270-82.sh-290-80&direction=3&size=l

<img src="https://www.habboassets.com/imaging/avatar.png?figure=hd-180-1.ch-210-66.lg-270-82.sh-290-80" alt="">

Example

curl "https://www.habboassets.com/api/v2/furniture?category=rare&per_page=15" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Hotel-ID: 1" \
  -H "Accept: application/json"