The API
The JSON this site's own pages read, written down so an
extension or a tool can read it too. Updated with the site; the
changes list at the bottom says what moved and when.
The ground rules
- No key. Every route on this page answers to anybody. Routes that need
a sign-in (your sets, favourites, inventory, points) are not for tools
and are not listed here.
- Cross-origin reads are allowed on the public routes
(
Access-Control-Allow-Origin: *), so a browser extension
or another site can call them directly.
- Rate limits, per address: 300 ordinary calls a minute; 30 renders in
five minutes (outfit pictures); 60 thumbnails in five minutes, counted
whether or not the picture was already drawn. Past that the answer is
429 with a Retry-After header and a sentence
saying why. If you need many thumbnails, keep a copy of each rather
than asking again.
- Field names are stable. A field is never renamed or removed without a
note in the changes list below, and the old name is kept for a while
beside the new one. Adding a field is not a change worth a note.
- Names are lowercase single words (
name,
file, slot, wtype). The few that
are two words are camelCase (rarityState,
chipWord). There is no wType and there never
was; wtype has been spelled that way since it was added on
17 September 2026.
- This is an unofficial fan project. The item data comes from the
community item sheet, the AQW wiki and the game's own item table; the
site adds what it learns from characters people look up.
An item
Every route that answers with items uses the same record. The first
block is the catalogue's own; the second is worked out per request and
says what the wardrobe's chip should say.
| Field | Type | Meaning |
name | string | The item's name as the sheet spells it. |
file | string | The SWF path under the game's item tree, forward slashes, no leading slash: items/helms/DragonHelm.swf. The one name the catalogue, the renders and the share links agree on; use it as the key. |
slot | string | One of armor, helm, cape, weapon, pet, ground. Hairs, locks and visages are helm. |
kind | string | "hair" for a hair, else "". |
wtype | string | On a weapon, the type the sheet declares: one of Sword, Dagger, Gauntlet, Staff, Gun, Mace, Polearm, Scythe, Wand, Bow, Whip. Empty or absent when the sheet does not say; the file's folder is then the best guess. |
member | boolean | Members only. |
ac | boolean | Sold for AdventureCoins. |
rarity | string | The rarity word, for example Rare, Awesome, Pseudo-Rare, or "". |
id | string | The community sheet's id, or "" for an item the site learned from a character before the sheet had it. |
cc | boolean | Colour custom: the item takes the player's base, trim and accent colours. |
link | string | The SWF's linkage class, when known. Usually absent; the renderer works it out. |
chipWord | string | What the card's chip says, which is not always the rarity word: an item gated by a wiki tag says the gate. |
rarityState | string | Can it be had: in-game, seasonal, rare, unobtainable or unknown. |
rarityNote | string | A sentence for the tooltip. |
seasonal | boolean | Comes back at a time of year; separate from the state, since a Mogloween item in October is both available and seasonal. |
when | string | The month it comes back, like October, or "". |
away | number or null | How many months off that is. |
owned | boolean | Only for a signed-in person with an imported inventory. Absent otherwise. |
ownedIn | string | Beside owned, where it is: inv, bank, chest (inside a collection chest or collection the person owns, not pulled out yet), house or pet (in the shop of a house item or a pet they own) or badge (a Book of Lore shop one of the person's badges opens). |
ownedFrom | string | With chest, house, pet or badge, the container's name or the badge's title. |
why | string[] | Only from complete the look: why this item was suggested. See that route. |
Extra fields may appear over time; read the ones you need and ignore the rest.
Items
GET /api/items/search
The wardrobe's search box. q is the box as typed, operators
and all (slot:helm, rarity:rare,
is:ingame, ac:no, -word,
"exact phrase", a or b); the wardrobe's help
button lists them. slot narrows to one slot,
limit (default 25) and offset page,
sort is name, new,
rarity or availability, and
browse=1 asks for the catalogue with nothing typed.
Answers { ready, total, offset, count, folded, note, results }:
results is a page of items, total how many
matched, count how many items the catalogue holds,
folded how many were hidden under a card that shares their
art (the card says +N), and note a sentence
when something in the query was read differently than typed.
GET /api/items/latest
Newest first: the items people taught the catalogue, then the sheet by
id descending (the sheet has no dates). slot,
limit (default 40, at most 200), offset.
Answers { ready, total, count, ordering, results }.
GET /api/items/thumb/:id.png
A picture of one item, transparent, cropped to the art, cached for a
week. :id is the sheet id, or unlisted when the
item has none; pass file and slot as well so an
item the sheet lacks can still be drawn, and gender=F for the
female body. A picture that has to be rendered fresh counts against the
thumbnail allowance; one already drawn does not.
GET /api/items/random
One random item per slot, from whatever q would find.
slots (required) is a comma list. Answers
{ ready, items: { slot: item }, pool: { slot: count } }.
GET /api/items/complete
What would go with what is worn. worn is a comma list of
files; slots which empty slots to fill (default: every one
not worn); limit per slot (default 8, at most 24);
gender=F; sets=1 to allow pieces from the same
set as what is worn, which are otherwise left out.
Answers { ready, slots: { slot: [item] }, worn, visual, mode,
basis, sets, setsOut, themes }. Each item carries
why: worn (people wear it with these),
goes (its look and colour match), looks
(a plain lookalike, from an older picture service),
set:<stem> (same set), theme:<word>
(the names share a theme). worn and visual say
whether those channels had anything to say; setsOut whether
set pieces were held back.
GET /api/items/lookalike
Items that look like some words (q) or like items by sheet
id (like, comma list), narrowed by slot and
gender, limit at most 48. Answers
{ ready, results }, or ready: false with a
reason while the picture service is cold.
GET /api/items/wanted
Items the game has that the catalogue has no art for. slot,
q, limit, offset. Answers
{ ready, total, results } where each result has a name, a slot
and a wiki link but no file.
GET /api/items/hair
The hairs for one body: gender (M or
F), limit. Answers { ok, gender, count,
results }.
GET /api/items/facts
Everything the site knows about every listed item, keyed by sheet id,
gzipped and large: { v, capturedAt, count, facts: { id: { r, s, z,
i, ac, m, c } } }. Short keys because seventy thousand rows go over
the wire: r rarity word, s state (as
rarityState above), z seasonal (0 or 1),
i which IoDA reaches it (normal, kb
or ""), ac, m member, c
colour custom. Fetch it once and keep it; it changes with the catalogue,
at most a few times a day.
Characters and closets
GET /api/character?name=
What a character is wearing, read from their character page. Answers
{ ok, outfit: { name, gender, items: { slot: { name, file, link,
slot } }, hair: { name, file }, colors }, learned, unrecorded }, or
ok: false with a reason
(not-found, unreachable). Looking a character
up teaches the catalogue anything new they wear, and counts the outfit
towards what people wear together.
GET /api/closets/:who
A closet its owner chose to make public, by display name or id. Answers
{ ok, id, name, address, sets: [{ id, name, outfit, saved,
picture }] } and, when its owner also chose to show them,
favourites (items) and favouritesTotal. A closed
or unknown closet is 404 with reason
private or ambiguous. Each set's
outfit is a share query (below) and picture a
public PNG.
The share link
An outfit is a query string, and it is what /wardrobe,
/compare, a saved set and /api/outfit.png all
take:
g=M
armor=Name|classes/M/File.swf|Linkage
helm=Name|items/helms/File.swf
cape=Name|items/capes/File.swf
weapon=Name|items/swords/File.swf|Linkage|Dagger
pet=Name|items/pets/File.swf
ground=Name|items/ground/File.swf
hair=Name|hair/M/File.swf
c_hair=RRGGBB c_skin=RRGGBB c_eye=RRGGBB
c_base=RRGGBB c_trim=RRGGBB c_accessory=RRGGBB
Each slot is name|file|link, with a fourth part on a
weapon when its type is not what the folder says. The linkage part may be
empty. g is M or F. Colours are six
hex digits, no hash. GET /api/outfit.png?... with the same
query draws it as a picture (a render, so the render allowance applies);
/wardrobe?... opens it to try on. The picture carries its
own link: a PNG tEXt chunk with the keyword
AQ Closet outfit holds the share URL, and a GIF holds the
same URL in a comment block that begins AQ Closet outfit: .
The wardrobe puts the outfit back on when either file is dropped on it.
The pixels are not changed by it. The renderer writes the same link into
the pictures the Discord bot posts, so those load too.
Housekeeping
GET /api/version: { build, started, commit,
branch, charbot }.
GET /health: whether the catalogue, the renderer and the
picture service are up, and the state of the background passes.
GET /api/featured, GET /api/palettes,
GET /api/leaderboard: what those pages show.
Changes
- 27 September 2026. Owned items say where they are,
in
ownedIn and ownedFrom, and
owned now also covers what sits inside a collection chest
the person owns, what the shop on a house item or a pet of theirs
sells, and what their badges open. The search takes
owned:inv, owned:bank,
owned:chest, owned:house,
owned:pet and owned:badge. Nothing removed
or renamed.
- 26 September 2026. Thumbnails: 60 in five minutes per
address (was 240), and a picture already drawn now counts too. The
/game/gamefiles/ proxy, which was never part of this API,
answers only this site's own pages. Nothing removed or renamed in the
routes listed here.
- 25 September 2026. Pictures from
/api/outfit.png and the set pictures carry the outfit's
share link in a PNG text chunk, keyword AQ Closet outfit.
Later the same day: GIFs carry it in a comment block, and the renderer
writes the same link into the Discord bot's pictures.
Nothing removed or renamed.
- 24 September 2026.
cc on every item.
Complete the look gained worn, mode and
setsOut, and the why values
worn and goes. Public closets may carry
favourites. Nothing removed or renamed.
- 17 September 2026.
wtype added to
weapons. There was no type field before it.
Questions
Something here wrong, or a field you need that is not served? Say so on
the report page or write to
[email protected].