Sync with Waxpeer session to auto-fill API key

Changelog

Wire and platform changes merchants should track. Breaking entries change required behavior.

2026-10

Buy orders: minimum price step

Breaking

Buy-order prices must be a multiple of a step that grows with the price: $0.01 below $5, $0.05 from $5, $0.10 from $10, $1 from $100, $5 from $500, $10 from $1000. Create and edit (v1 and v2) refuse other prices with code invalid_price_step; an edit is checked only when its price changes.

2026-10

Buy orders v2: CS2 filters and automatic fills; v1 answers as v2

Breaking

New buy-order routes: POST /v2/create-buy-order (JSON body; CS2 filters for float, paint seeds, Doppler phase, stickers with slot and charm with pattern; allow_trade_locked; amount 1 to 250; any number of orders per item), POST /v2/edit-buy-order (price and amount; filled is kept, an amount at or below filled closes the order), GET /v2/buy-orders, POST /v2/remove-buy-order, POST /v2/remove-all-orders and GET /v2/buy-order-history (fills and cancellations with kind, reason, item_id and order_id). Orders fill automatically from listings already for sale and from new ones; an order whose owner cannot pay is cancelled with reason insufficient_funds. Limits: unit price up to your balance, open orders up to 10 × your balance, at most 1000 open orders, 10 writes per 10 seconds. Refusals are HTTP 200 with a stable code. Breaking: the v1 buy-order paths are deprecated and answer with the v2 contract: v2 validation, refusal messages and codes, no one-order-per-item rule, filled kept on edit, filtered orders in the public list and cancellations in the history. Successful v1 answers keep v1's field names (id, msg, offers, count, item_name, last_updated) next to v2's. GET /v1/buy-orders/snapshot is unchanged.

2026-10

Bulk availability, history filters and inspect on Socket.IO

Non-breaking

POST /v1/check-availability answers up to 1000 item_ids with each listing's CSV snapshot fields plus float, paint_index, phase and sticker_names, read live. POST /v1/my-history and /v2/my-history filter trades by status and reason (start and end required, at most 31 days apart) and return reason, reversed_by and penalties on every trade. Socket.IO game item events carry inspect and delivery.

2026-09

CSV delivery column, merchant column, and include_manual

Non-breaking

GET /v1/prices/snapshot?format=csv now returns a 12-column header: item_id,name,price,auto,inspect,unlock_at,send_until,class_id,instance_id,steam_id,merchant,delivery. Column 11 (merchant, 2026-09-28): supply-source identifier; empty when unknown. Column 12 (delivery, 2026-09-29): hold, instant, regular, or manual. New opt-in include_manual=1 (CSV only, same rules as include_hold) adds Waxpeer-operated 12-hour manual-delivery P2P rows with delivery=manual and empty merchant. Columns are append-only — positional readers of columns 1–10 keep working.

2026-09

CSV snapshot and trade-locked listings

Non-breaking

GET /v1/prices/snapshot?format=csv returns one gzip CSV row per listing. The CSV and its include_hold=1 twin share one header: item_id,name,price,auto,inspect,unlock_at,send_until,class_id,instance_id,steam_id (header later extended with merchant and delivery columns). include_hold=1 fills unlock_at and send_until on trade-locked rows (those columns are always present). compact is JSON-only. Pass include_hold=1 on prices, dopplers, snapshot, search-by-name, check-availability, get-items-list, and mass-info to also receive trade-locked listings. Buy one only by exact item_id with allow_trade_locked. A reservation stays at steamTrade stage 11; unlock_at comes from the buy response.

2026-09

Partner API updates: cursor pagination, v2 history, and highest offer

Non-breaking

Added GET /v2/get-items-list with cursor pagination for deep pages. next_cursor is present only when has_more is true. POST /v2/my-history matches v1, is faster on long histories, and returns the price you paid on buy rows. New history flags: project_id, orig_price, ignoreSteamid, and all. GET /v1/prices accepts highest_offer. GET /v1/list-items-steam adds escrow and unlock_at (null on a regular listing). Removed ignored params minified_stickers and steam_price from GET /v2/search-items-by-name.

2026-09

Docs relaunch

Non-breaking

Path-based docs replace ?method= URLs. Unique SEO per method, View as Markdown, /llms.txt, /llms-full.txt, and in-browser Try it via a CORS proxy. Old links redirect.

2026-03

Merchant Deposit v2

Non-breaking

Additive /v2/merchant/* endpoints: create deposit, load a user Steam inventory, create a Steam offer, deposit status, list deposits, webhooks and resend.

2026-01

POST /v1/buy bulk purchase

Non-breaking

Buy multiple items in one request. Each item succeeds or fails independently unless all is true. Prices are integer units (USD × 1000).

2025-11

POST /v1/update-account unified settings

Non-breaking

One call updates tradelink, Steam access token, proxy, Steam API key, and webhook — useful for partners managing accounts waiting on trade verification.

2025-10

POST /v1/user/steam-token required for online

Breaking

Steam API-key-only selling no longer works. Send a base64 Steam access token hourly or listings go offline and in-flight trades may stall.

2025-09

GET /v1/ready-to-transfer-p2p deprecated

Breaking

Do not poll this endpoint in new integrations. Connect to the trade websocket. The method remains only as a fallback for unstable networks.

2025-08

GET /v2/search-items-by-name

Non-breaking

Prefer v2. v1 remains but is the wrong default (no stickers / steam price). Shared 20 req/min rate limit for regular users.

2025-07

New Payout Scheme + is_released / release_date

Non-breaking

Funds from sales are credited 7 days after the item is delivered to the buyer. Until then, they remain in hold: visible on the trade page but unavailable for withdrawal. If the item is returned by the buyer (reason = "Reversed by buyer"), a 30% penalty is applied. New fields: is_released (boolean), release_date (timestamp).

2025-07

Trade lock: escrow_status (site-only)

Non-breaking

escrow_status exists only on the website history pages. The public API does not return it on check-many-steam, check-many-project-id, or my-history. Use numeric status with is_released and release_date for Steam Trade Protection.

2025-06

POST /v1/force-check-trade

Non-breaking

Buyer or seller can force a status check, once per hour per trade based on last_updated.

2025-05

Steam top-up + Tron energy payments

Non-breaking

Top up a Steam wallet from Waxpeer balance, validate a login, read TRX price, and rent Tron energy.