Buy items using item_id and send to specific tradelink
Notes about trades and frequently asked questions
The duration of the trade in different situations:
If seller's info is invalid then it can be cancelled immediately and status 6 is set;
If seller's details are valid, but no trade is created, then it will auto-cancel after 6 minutes;
if created or waiting for mobile confirmation then it will auto-cancel after 11 to 15 min (depends on when created);
if trade is waiting for mobile confirmation and connection with the seller was lost then it will auto-cancel after 6 hours.
We recommend adding project_id to purchase so that you can track a trade in case of a timeout or break of purchase request using the /check-many-project-id GET method one minute after the request.
An array of possible messages with purchase errors and other information, such as status, can be seen by opening the response scheme, where:
System busy - trade is cancelled due to tradelink check timeout or heavy load;
buy_csgo - CS:GO purchases are deactivated on the market;
buy_rust - RUST purchases are deactivated on the market.
A trade-locked listing can be bought only by exact item_id and only with allow_trade_locked. The opt-in confirms that you saw unlock_at and accept delayed delivery. Without it the purchase is refused: "trade-locked listing: pass allow_trade_locked=1 to confirm delayed delivery". You are charged in full at purchase time. There is no endpoint to cancel a reservation. A successful hold purchase adds purchase_status "reserved", unlock_at, and send_until (RFC 3339 UTC). Regular purchases omit those fields. GET /v1/buy-one-p2p-name never sells hold items.
Trade link errors
Before buying we validate the buyer's trade link with Steam. These errors are on the buyer's side: no purchase is created and nothing is charged. Once the buyer fixes the problem, the next purchase goes through.
Most of these come as msg: "Your tradelink is incorect, please update it", with the reason from Steam in error_msg:
error_msg contains |
Reason |
|---|---|
...'s inventory privacy is set to "Private" |
Inventory is private |
... because they have a trade ban |
Steam trade ban |
This Trade URL is no longer valid ... |
The trade link was regenerated; use the new one |
... is not available to trade |
The account cannot trade. Steam shows the exact reason only to the account owner |
If error_msg equals msg, Steam returned no details: the trade link is missing or malformed, or the reason is in msg itself (Please set your steam inventory public, Trade banned, User has VACBAN or Game Ban, You're banned for not accepting trades).
double purchase
double purchase: the same item_id (with the same project_id) was already received in the last 5 seconds. The duplicate is rejected and nothing is charged for it; the first request is processed normally. Usually caused by a client-side retry. To find the result of the first request, use /v1/check-many-project-id.
Parameters
| Name | Location | Type | Description |
|---|---|---|---|
apirequired | query | string | Your WAXPEER API key |
project_idoptional | query | string | Custom order identifier (project_id) |
item_idrequired | query | string | Unique Waxpeer item identifier (item_id) |
tokenrequired | query | string | Steam trade link token or access token |
pricerequired | query | number | Item price in integer format (1000 = $1.00 USD) |
partnerrequired | query | string | Steam partner ID64 |
allow_trade_lockedoptional | query | string | allow_trade_locked |
Responses
200 Successful operation
| Name | Type | Description |
|---|---|---|
successoptional | boolean | Whether the operation succeeded |
idoptional | number | Identifier |
msgoptional | enum | Reason message when success is false enum: We couldn't validate your trade link, either your inventory is private or you can't trade, There was an error while sending your trade offer, try again later, Please set your steam inventory public, Your tradelink is incorect, please update it, Item price has increased or item is no longer available, Please enter your trade link, System busy, buy_csgo, buy_tf2, buy_rust, buy_dota2, Buy request with projectId: <project_id> already exists, trade-locked listing: pass allow_trade_locked=1 to confirm delayed delivery, double purchase, noFunds, Item price has increased, Trade banned, User has VACBAN or Game Ban, You're banned for not accepting trades, We couldn't validate your trade link, you have trade restrictions |
priceoptional | number | Item price in integer format (1000 = $1.00 USD) |
purchase_statusoptional | string | reserved on successful trade-locked purchase |
unlock_atoptional | string | RFC 3339 UTC time when the Steam trade lock ends and item can be sent. null for regular items |
send_untiloptional | string | RFC 3339 UTC delivery deadline |
error_msgoptional | string | Detailed reason when |
{
"success": true,
"id": 1,
"msg": "buy_csgo",
"price": 1000,
"purchase_status": "reserved",
"unlock_at": "2026-08-04T12:00:00Z",
"send_until": "2026-08-05T12:00:00Z",
"error_msg": "string"
}