How to use Socket.IO
wss://waxpeer.com/socket.io/?EIO=4&transport=websocket
How to use SocketIO
Socket.IO is a JavaScript library that enables real-time, bidirectional communication between the server and the client. This guide will walk you through the steps to integrate Waxpeer Socket.IO into your application.
Connection URL
Connect using standard Socket.IO client (v4 protocol) to:
wss://waxpeer.com/socket.io/?EIO=4&transport=websocketAuthentication
Authentication can be accomplished in two ways via connection headers:
- API Key: Pass your Waxpeer API key as authorization header:
authorization: YOUR_WAXPEER_API_KEY - Session Cookie: Pass the session cookie in the Cookie header:
Cookie: _redis=s%3Ayour_session_cookie
Subscribing to Public Feeds
After establishing a connection, you can emit subscription commands to listen for specific game item events:
csgo,rust,tf2,dota2: Emits new, removed, and update events per listed item.privat_salesor specificitem_id: Listen to target item updates.inspect: Listen to inspect link responses.
Example wire subscription messages:
42["sub",{"name":"csgo"}]
42["unsub",{"name":"csgo"}]Supported User Events
When authenticated, the server will emit the following real-time user events:
payment: Incoming and outgoing balance transactionsnotification: Site notifications, item confirmations, and trade alertschange_user: Balance, KYC, and account status changesconnection: Linked third-party accounts (Discord, Steam)steamTrade: Real-time buyer/seller trade lifecycle status updates
Game item event
Public stream for newly listed, updated, and removed items across supported games (CS:GO, Rust, TF2, Dota 2).
Event payload fields
| Name | Type | Description |
|---|---|---|
event | string | new, update or removed |
game | string | csgo, rust, tf2 or dota2 |
item_id | string | Listing id (Steam asset id) |
name | string | Market hash name |
price | number | 1000 = $1 |
auto | boolean | Instant delivery |
classid | string | Steam class id (the CSV snapshot calls this column class_id) |
instance_id | string | Steam instance id |
steam_price | number | null | Steam price, 1000 = $1 |
steam_id | string | New. OPTIONAL. SteamID64 of the account holding the item. Omitted when not known. |
unlock_at | string | New. OPTIONAL. RFC 3339 UTC. Present only on a trade-locked listing: when the Steam trade lock ends. |
send_until | string | New. OPTIONAL. RFC 3339 UTC. Present only on a trade-locked listing: delivery deadline. |
phase | string | OPTIONAL. Doppler phase, only on Doppler items |
float | number | OPTIONAL. Float wear value (CS2) |
paint_index | number | OPTIONAL. Paint index (CS2) — not the paint seed |
sticker_names | string[] | OPTIONAL. Applied sticker names (CS2) |
inspect | string | null | New. OPTIONAL. Steam inspect link (CS2), as in the CSV inspect column; null when the listing has none. An update is not sent when only the link changes. |
delivery | string | How the listing ships: instant, regular, hold or manual (the CSV delivery column) |
Trade-locked listings carry unlock_at and send_until. When the lock ends, an update event arrives without these two fields — from then on the listing delivers instantly. A removed event may carry only event, game, item_id, name and price.
{
"event": "new",
"game": "csgo",
"item_id": "53927617185",
"name": "★ Bayonet | Gamma Doppler (Factory New)",
"price": 1234500,
"auto": true,
"classid": "7993038249",
"instance_id": "480085569",
"steam_price": 1301230,
"steam_id": "76561199883497268",
"unlock_at": "2026-10-02T16:00:00Z",
"send_until": "2026-10-03T16:00:00Z",
"phase": "Phase 2",
"float": 0.0123456789,
"paint_index": 413,
"sticker_names": [],
"inspect": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561199883497268A53927617185D9876543210",
"delivery": "hold"
}Change user
Private stream for user account balance updates, KYC verification status changes, and P2P cooldown timers.
User change parameters
| Name | Type | Description |
|---|---|---|
wallet | number | OPTIONAL. Current wallet balance (1000 = $1.00 USD) |
kyc_status | string | OPTIONAL. Verification status: “requested”, “approved”, etc. |
no_p2p_until | string | OPTIONAL. ISO 8601 date-time until which P2P trading is restricted |
failed_trades | number | OPTIONAL. Lifetime count of failed trades |
failed_row | number | OPTIONAL. Current consecutive streak of failed trades |
success_trades | number | OPTIONAL. Lifetime count of successful trades |
{
"wallet": 10000,
"kyc_status": "requested",
"no_p2p_until": "2024-01-01T00:00:00Z",
"failed_trades": 2,
"failed_row": 2,
"success_trades": 5
}Steam trade
Private real-time stream of Steam trade lifecycle updates. data.stage = 11: a trade-locked purchase, reserved until the Steam trade lock ends. The unlock time is in the buy response (unlock_at). Any other stage means delivery has started. The final update has done: true — the item was delivered, or it carries a failure reason and you are refunded in full.
Trade event fields
| Name | Type | Description |
|---|---|---|
type | string | Operation type: “create” or “update” |
data.id | string | Unique identifier for the trade |
data.stage | number | 11: a trade-locked purchase, reserved until the Steam trade lock ends. The unlock time is in the buy response (unlock_at). Any other stage means delivery has started. |
data.reason | string | null | Why the trade ended, same values as reason in /v1/check-many-steam: Seller failed to accept, Buyer failed to accept, Invalid buyer tradelink, Cancelled by buyer, Reversed by seller, Reversed by buyer, Trade was rolled back. null while the trade is in progress or when it completed. |
data.costum_id | string | Custom project identifier for the trade |
data.creator | string | Who initiated the trade offer (“seller” or “buyer”) |
data.boxed | string | ISO 8601 timestamp when the trade was boxed |
data.send_until | string | ISO 8601 deadline for trade confirmation |
data.last_updated | string | ISO 8601 timestamp of last status change |
data.done | boolean | Whether the trade is finalized |
data.now | string | Current server ISO 8601 timestamp |
data.user | object | Buyer account details (id, name, avatar, can_p2p, kyc_status) |
data.merchant | object | Merchant details (merchant, avatar, currency_value) |
data.seller | object | Seller details (id, name, avatar, shop, auto, success_trades) |
data.for | object | Recipient Steam profile metadata (steam_joined, steam_level) |
data.items | object[] | Array of items included in the trade with inspect & sticker data |
{
"type": "update",
"data": {
"id": "10546645",
"stage": 11,
"reason": null,
"send_until": "2024-02-05T22:21:31.645Z",
"last_updated": "2024-02-05T22:16:10.709Z",
"done": false,
"boxed": "2024-02-05T22:15:36.645Z",
"costum_id": "710a2b8c-3c24-47e8-9b8b-028b177ff0ed",
"creator": "seller",
"now": "2024-02-05T22:16:10.712Z",
"merchant": {
"merchant": "skinpeer",
"avatar": "1605372312364-wax-logo.jpg",
"currency_value": 1,
"currency_icon": null,
"successlink": null
},
"user": {
"id": "dadf0f33-3563-441a-9ae0-73c0d1b1954c",
"name": "ITY",
"avatar": "https://avatars.steamstatic.com/cb2e23107e1b8a23c38e89ed4b296855d3f0a523_medium.jpg",
"can_p2p": true,
"kyc_status": "approved"
},
"seller": {
"id": "1ee21a71-b222-4fa0-bc74-7b69e929f59d",
"name": "pashkin",
"avatar": "https://avatars.akamai.steamstatic.com/29108b7865c3aa9b802b89ade6874db85444f177_medium.jpg",
"can_p2p": true,
"kyc_status": null,
"shop": "1ee21a71-b222-4fa0-bc74-7b69e929f59d",
"auto": true,
"success_trades": 17,
"failed_trades": 1
},
"for": {
"name": "ITY",
"avatar": "https://avatars.steamstatic.com/cb2e23107e1b8a23c38e89ed4b296855d3f0a523_medium.jpg",
"kyc_status": "approved",
"steam_joined": 1476828448,
"steam_level": 151
},
"items": [
{
"id": 11491794,
"price": 2951,
"name": "StatTrak™ AK-47 | Elite Build (Field-Tested)",
"status": 0,
"merchant": "skinpeer",
"item_id": 35561226317,
"trade_id": null,
"image": "https://steamcommunity-a.akamaihd.net/economy/image/class/730/5701259026/200fx125f",
"sent_time": null,
"inspect_item": {
"floatvalue": 0.2730073928833008,
"rarity_name": "Mil-Spec Grade",
"stickers": [
{
"name": "Sticker | Ninjas in Pyjamas | Cologne 2015",
"slot": 3,
"wear": 0,
"sticker_price": {
"average": 2680,
"img": "https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs..."
}
}
]
},
"steam_prices": {
"rarity_color": "#EB4B4B",
"game_id": 730,
"collection": "The Cobblestone Collection",
"collection_icon": "https://cdn.csmarketcap.com/icons/the-cobblestone-collection.png"
}
}
]
}
}Connections
Private stream for third-party linked account status updates (Discord, Steam bot bindings, OAuth).
Connection event fields
| Name | Type | Description |
|---|---|---|
type | string | Operation type: “create”, “update”, or “delete” |
data | object | null | Current connection object (null on delete operations) |
previous_data | object | null | Previous state of the connection object (provided only on delete operations) |
{
"type": "delete",
"data": null,
"previous_data": {
"id": 4,
"username": "®Suspect4you®",
"user": "2b4fd250-f1528-4307-904e-c86d7e7c0f65",
"email": "[email protected]",
"avatar": "https://cdn.discordapp.com/avatars/374121399750492160/8d68bf6a22d3279341f6f51ee2c72509.png",
"oauth": "discord",
"oauth_id": "123",
"discriminator": "31270",
"date": "2019-09-17T12:25:22.051749-04:00",
"bot": "bot1",
"main": false
}
}Notification
User notifications regarding trades, deliveries, Steam mobile confirms, and marketplace alerts.
Notification fields
| Name | Type | Description |
|---|---|---|
type | string | Notification operation type: “create” or “update” |
data.id | number | Internal notification identifier |
data.user | string | Target user UUID |
data.action | string | Trigger action name (e.g. “sending_steam”) |
data.message | string | Descriptive notification message |
data.parameter | string | OPTIONAL. Status parameter (e.g. “canceled”) |
data.read | boolean | Whether the notification has been marked as read |
data.identification | string | Unique identification fingerprint string |
data.created | string | ISO 8601 creation timestamp |
data.updated | string | OPTIONAL. ISO 8601 last update timestamp |
{
"type": "update",
"data": {
"id": 19240228,
"user": "dadf0f33-3563-441a-9ae0-73c0d1b1954c",
"link": null,
"action": "sending_steam",
"image": "https://steamcommunity-a.akamaihd.net/economy/image/class/730/4302203073/200fx125f",
"message": "Sticker | Heroic | 2020 RMR",
"parameter": "canceled",
"read": true,
"identification": "10375241dadf0f33-3563-441a-9ae0-73c0d1b1954c25707995376",
"created": "2024-01-18T09:15:33.330Z",
"updated": "2024-01-19T05:29:12.758Z"
}
}Payment
Transaction lifecycle updates for deposits and withdrawals.
Payment event fields
| Name | Type | Description |
|---|---|---|
type | string | Payment event type: “create” or “update” |
data.id | number | Internal payment transaction ID |
data.status | string | Transaction status (e.g. “completed”, “pending”, “failed”) |
data.transaction_id | string | null | External payment processor or blockchain transaction hash |
data.direction | string | Fund flow direction: “in” (deposit) or “out” (withdrawal) |
data.updated | string | ISO 8601 last update timestamp |
{
"type": "update",
"data": {
"id": 727016,
"status": "completed",
"transaction_id": null,
"updated": "2023-12-17T23:05:11.991545-05:00",
"direction": "out"
}
}