
Auction House
The Goblin Market, the server's auction house on the web. Browsing, buying with your game balance or Phantom, listing from a logged-out character, delivery by mail, and the API behind the page.
One auction house, two doors
The Goblin Market is the game's auction house, reachable from a web page. It is not a separate market:
- Web listings appear at the in-game auctioneers, like any other auction.
- In-game buyout auctions can be bought on the web.
- Everything is priced in Mithril. One MITH is one copper, so a [Lionheart Helm] for 365,000 MITH is what vanilla called 36 gold 50 silver.
Browsing
The page is the 1.12 Auction House frame: name search, level range, rarity, slot, house (Alliance, Horde, neutral), "under vendor price", the category list with weapon and armour sub-classes, and sortable columns. Hover any item for its full tooltip. Rows show the buyout and the current bid; stacks show the price each.
Bids are placed at in-game auctioneers. The website sells buyouts.
Buying
- Pick a lot and press Buyout (or double-click it). Confirm the price.
- Choose how to pay:
- Game balance: the MITH in your game vault. No popup: the server moves it inside the program's rules.
- Phantom: MITH from your own wallet. Phantom asks once, to approve a deposit into your vault that covers the price; the server pays the network fee.
- The market reserves the lot for five minutes so the website can't sell it twice, and the bridge moves your payment into escrow.
- The order processor in the world server checks the auction still exists, removes it, and mails the item to the character you choose. The seller is credited in game. Collect the item from any mailbox.
- If the lot disappeared in the meantime (sold in game, cancelled, expired), the order fails and your payment is refunded automatically to your game balance.
Selling
- Sign in with Phantom. The market lists the characters on your wallet's account.
- Pick a logged-out character, then an item from its bags or bank. Soulbound and quest items can't be listed.
- Set a starting price and a buyout, and a duration of 2, 8 or 24 hours.
- The order processor moves the item into the auction house exactly as the in-game auctioneer does, charges the deposit, and the listing appears in game and on the web.
- When it sells, the proceeds arrive in your character's mail as an "Auction successful" letter, like in the game: sale price, the auction house cut, the transfer fee, the amount received.
| Charge | Amount |
|---|---|
| Deposit | the game's own formula, based on the item's vendor price, the stack and the duration; refunded when the item sells |
| Auction house cut | 5% at the faction houses, 15% at the neutral house (the game's rates) |
| Transfer fee | none |
What the page shows, honestly
| Mode | What you see |
|---|---|
| Sample | Real item templates, invented prices, sellers, sales and trends. A red (Sample) tag on every widget. The default until the market is live. |
| Live | The real auction house, refreshed every few seconds, and your real characters and bags. Sales history and price charts start empty and fill from the first recorded sale. |
| Pre-launch | Until MITH is on mainnet: balances and the token contract show their "at launch" states. |
The API
The page talks to the Goblin Market server over JSON. It is set in the site configuration (api.market); when it's empty the page uses its sample file. All amounts are MITH (= copper). Errors look like { "ok": false, "error": "...", "message": "..." }.
| Method | Path | What |
|---|---|---|
| GET | /api/status | database, live auction count, suggested mode, bridge state |
| GET | /api/listings | search: q, quality, class, subclass, slot, minLevel, maxLevel, house, buyoutOnly, deals, sort, page, perPage, mode |
| GET | /api/listings/:id | one lot |
| GET | /api/items/:entry | the full item template and its spell text, for tooltips |
| GET | /api/items/:entry/history | price history |
| GET | /api/sales, /api/trending | the sales log and what's selling |
| POST | /api/auth/nonce, /api/auth/verify | Sign In With Solana: a single-use nonce, then the signed message; sets a session cookie |
| GET | /api/me/characters, /api/me/characters/:guid/items | your characters, their bags and bank, with what can be listed |
| GET | /api/me/balances, /api/me/listings, /api/me/orders | game balance and Phantom balance, your auctions, your purchases |
| POST | /api/orders/buy | { listingId, paySource: "vault" or "phantom" } |
| POST | /api/listings, DELETE /api/listings/:id | { characterGuid, itemGuid, price, startBid, duration } |
| POST | /api/vault/withdraw, /api/vault/deposit | { amount } |
Listing rows look like this:
{ "id": "a1042", "entry": 12640, "count": 1, "buyout": 365000, "currentBid": 0, "startBid": 299000,
"expiresAt": 1791532092, "seller": "Tinkerwiz", "house": "alliance", "source": "web",
"item": { "entry": 12640, "name": "Lionheart Helm", "quality": 4, "requiredLevel": 56, "sellPrice": 21894 } }
Sign In With Solana
- The page asks for a nonce: 16 random bytes, single use, valid five minutes.
- Phantom signs a standard sign-in message with the site's domain, your address, the nonce and the times.
- The server checks the domain, the address, the signature, the expiry and the clock, and only then uses up the nonce, so a bad attempt never burns a good one.
- The session is an
HttpOnly,SameSite=Strictcookie; requests that change something must also come from the site's own origin.
Status
The market server, its sample mode, the search, the tooltips, Sign In With Solana and the buy and list screens are built. Live buying and listing wait for the order processor in the world server and the bridge's escrow moves for orders. Until then, write requests are validated and answered with "not connected yet".