Sync with Waxpeer session to auto-fill API key

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.

Looking for peer-to-peer trade automation and confirmations? See the Trade WebSocket documentation. Socket.IO handles marketplace price feeds, account balance changes, and notification events.

Connection URL

Connect using standard Socket.IO client (v4 protocol) to:

wss://waxpeer.com/socket.io/?EIO=4&transport=websocket

Authentication

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_sales or specific item_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 transactions
  • notification: Site notifications, item confirmations, and trade alerts
  • change_user: Balance, KYC, and account status changes
  • connection: 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

NameTypeDescription
eventstringnew, update or removed
gamestringcsgo, rust, tf2 or dota2
item_idstringListing id (Steam asset id)
namestringMarket hash name
pricenumber1000 = $1
autobooleanInstant delivery
classidstringSteam class id (the CSV snapshot calls this column class_id)
instance_idstringSteam instance id
steam_pricenumber | nullSteam price, 1000 = $1
steam_idstringNew. OPTIONAL. SteamID64 of the account holding the item. Omitted when not known.
unlock_atstringNew. OPTIONAL. RFC 3339 UTC. Present only on a trade-locked listing: when the Steam trade lock ends.
send_untilstringNew. OPTIONAL. RFC 3339 UTC. Present only on a trade-locked listing: delivery deadline.
phasestringOPTIONAL. Doppler phase, only on Doppler items
floatnumberOPTIONAL. Float wear value (CS2)
paint_indexnumberOPTIONAL. Paint index (CS2) — not the paint seed
sticker_namesstring[]OPTIONAL. Applied sticker names (CS2)
inspectstring | nullNew. 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.
deliverystringHow 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.

Example
{
  "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

NameTypeDescription
walletnumberOPTIONAL. Current wallet balance (1000 = $1.00 USD)
kyc_statusstringOPTIONAL. Verification status: “requested”, “approved”, etc.
no_p2p_untilstringOPTIONAL. ISO 8601 date-time until which P2P trading is restricted
failed_tradesnumberOPTIONAL. Lifetime count of failed trades
failed_rownumberOPTIONAL. Current consecutive streak of failed trades
success_tradesnumberOPTIONAL. Lifetime count of successful trades
Example
{
  "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

NameTypeDescription
typestringOperation type: “create” or “update”
data.idstringUnique identifier for the trade
data.stagenumber11: 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.reasonstring | nullWhy 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_idstringCustom project identifier for the trade
data.creatorstringWho initiated the trade offer (“seller” or “buyer”)
data.boxedstringISO 8601 timestamp when the trade was boxed
data.send_untilstringISO 8601 deadline for trade confirmation
data.last_updatedstringISO 8601 timestamp of last status change
data.donebooleanWhether the trade is finalized
data.nowstringCurrent server ISO 8601 timestamp
data.userobjectBuyer account details (id, name, avatar, can_p2p, kyc_status)
data.merchantobjectMerchant details (merchant, avatar, currency_value)
data.sellerobjectSeller details (id, name, avatar, shop, auto, success_trades)
data.forobjectRecipient Steam profile metadata (steam_joined, steam_level)
data.itemsobject[]Array of items included in the trade with inspect & sticker data
Example
{
  "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

NameTypeDescription
typestringOperation type: “create”, “update”, or “delete”
dataobject | nullCurrent connection object (null on delete operations)
previous_dataobject | nullPrevious state of the connection object (provided only on delete operations)
Example
{
  "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

NameTypeDescription
typestringNotification operation type: “create” or “update”
data.idnumberInternal notification identifier
data.userstringTarget user UUID
data.actionstringTrigger action name (e.g. “sending_steam”)
data.messagestringDescriptive notification message
data.parameterstringOPTIONAL. Status parameter (e.g. “canceled”)
data.readbooleanWhether the notification has been marked as read
data.identificationstringUnique identification fingerprint string
data.createdstringISO 8601 creation timestamp
data.updatedstringOPTIONAL. ISO 8601 last update timestamp
Example
{
  "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

NameTypeDescription
typestringPayment event type: “create” or “update”
data.idnumberInternal payment transaction ID
data.statusstringTransaction status (e.g. “completed”, “pending”, “failed”)
data.transaction_idstring | nullExternal payment processor or blockchain transaction hash
data.directionstringFund flow direction: “in” (deposit) or “out” (withdrawal)
data.updatedstringISO 8601 last update timestamp
Example
{
  "type": "update",
  "data": {
    "id": 727016,
    "status": "completed",
    "transaction_id": null,
    "updated": "2023-12-17T23:05:11.991545-05:00",
    "direction": "out"
  }
}