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
authorizationheader:authorization: YOUR_WAXPEER_API_KEY - Session Cookie: Pass the session cookie in the
Cookieheader: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: Emitsnew,removed, andupdateevents 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 | Action type: “new”, “removed”, or “update” |
game | string | Game identifier: “csgo”, “rust”, “tf2”, or “dota2” |
name | string | Full market hash name of the item |
price | number | Item price in integer units (1000 = $1.00 USD) |
item_id | string | Unique item identifier in Waxpeer |
float | number | OPTIONAL. Float wear value (applicable to CS:GO items) |
paint_index | number | OPTIONAL. Paint seed / index (applicable to CS:GO items) |
selling | boolean | OPTIONAL. Indicates whether the item is actively listed for sale |
sticker_names | string[] | OPTIONAL. Array of applied sticker names |
{
"event": "update",
"game": "csgo",
"name": "AWP | Gungnir (Well-Worn)",
"float": 0.44339460134506226,
"price": 7260000,
"item_id": "34822680618",
"paint_index": 756,
"sticker_names": [
"Sticker | keshandr (Foil) | Krakow 2017"
]
}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 with full inspection, sticker, and counterpart metadata.
Trade event fields
| Name | Type | Description |
|---|---|---|
type | string | Operation type: “create” or “update” |
data.id | string | Unique identifier for the trade |
data.stage | number | Current numeric stage of the trade process |
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": 1,
"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"
}
}