Markets, items and freshness
Choose a market, preserve item variants, and distinguish snapshots from live prices.
Market IDs
Each ruleset/faction pair has its own prices and history. The strip supplies faction; your external client supplies the ruleset.
forever.normal.alliance.usforever.normal.horde.usforever.pvp.alliance.usforever.pvp.horde.usforever.rp.alliance.usforever.rp.horde.usAll HTTP timestamps are Unix milliseconds. Prices are integer copper: 100 copper = 1 silver; 10,000 copper = 1 gold.
Item keys
Plain items use their numeric item ID. Suffix variants and pet species use distinct safe-integer keys, up to 2⁵³ − 1. Keep keys as 64-bit integers (Rust) or safe integers (JavaScript), never 32-bit integers.
key = itemID + 2147483648 × v
v = 0 # plain item
v = 2 × suffixID # positive suffix
v = 2 × abs(suffixID) − 1 # negative suffix
v = 65536 + speciesID # caged battle petOn Forever, suffix IDs are the name-description IDs encoded in item bonuses. A pet key uses its species ID, not its creature ID. Reuse the key helpers and verified link parser; do not flatten variants into the base item. Item ID zero and variant value 65536 are invalid.
Snapshot and live reads
Public snapshot reads show the hourly published view, with seven days of history. Features such as prices.live, depth, books and candle resolution control additional views. Consult GET /api/v1/me instead of assuming a role grants every feature.
The live table accepts ?since=<milliseconds> for rows changed on the server since that point. A late observation may have an older row time; do not use its observation timestamp as a server-change cursor. For a durable stream, use CDN sequences and checkpoints.
Use live in responses and each row’s observation time to show freshness. null quantity means unknown; it never means zero. Overall quantity listed is public, while volume estimates and order-book depth require their features.
Versioned contracts and runnable examples live with the source specification →.