Sync with Waxpeer session to auto-fill API key

Buy items in bulk and send to one tradelink

POST/v1/buy

Buy up to multiple items in one request. Each item is purchased independently — check the per-item success in the response array. Prices are integer units (USD * 1000), same as /v1/buy-one-p2p. We recommend adding a project_id per item so you can track trades with the /check-many-project-id GET method in case of a timeout.

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.

Duplicates

double purchase on an item: the same item_id was sent twice in one request, or already received in the last 5 seconds.

Prices are integers. 1000 = $1.00 USD.

Parameters

NameLocationTypeDescription
api
required
querystring

Request body

NameLocationTypeDescription
tradelink
optional
bodystring

Partner's Steam trade URL (tradelink)

all
optional
bodyboolean

all

items
required
bodyarray<object>

Array of items

item_id
optional
bodystring

Unique Waxpeer item identifier (item_id)

name
optional
bodystring

Full item market hash name

price
required
bodyinteger

Item price in integer format (1000 = $1.00 USD)

project_id
optional
bodystring

Custom order identifier (project_id)

allow_trade_locked
optional
bodyboolean

allow_trade_locked

Example
{
  "tradelink": "string",
  "all": false,
  "items": [
    {
      "item_id": "string",
      "name": "string",
      "price": 0,
      "project_id": "string"
    }
  ],
  "allow_trade_locked": false
}

Responses

200 Successful operation

NameTypeDescription
success
optional
boolean

Whether the operation succeeded

msg
optional
string

Reason message when success is false

items
optional
array<object>

Array of items

success
optional
boolean

Whether the operation succeeded

id
optional
integer

Identifier

item_id
optional
string

Unique Waxpeer item identifier (item_id)

name
optional
string

Full item market hash name

price
optional
integer

Item price in integer format (1000 = $1.00 USD)

internal_item_id
optional
string
new_price
optional
integer

New price if purchase failed due to price increase

msg
optional
string

Reason message when success is false

error_msg
optional
string

Detailed reason when success is false. For trade link errors, see Trade link errors on /v1/buy-one-p2p.

purchase_status
optional
string

reserved on successful trade-locked purchase

unlock_at
optional
string

RFC 3339 UTC time when the Steam trade lock ends and item can be sent. null for regular items

send_until
optional
string

RFC 3339 UTC delivery deadline

Response
{
  "success": false,
  "msg": "string",
  "items": [
    {
      "success": false,
      "id": 0,
      "item_id": "string",
      "name": "string",
      "price": 0,
      "internal_item_id": "string",
      "new_price": 0,
      "msg": "string",
      "error_msg": "string",
      "purchase_status": "reserved",
      "unlock_at": "2026-08-04T12:00:00Z",
      "send_until": "2026-08-05T12:00:00Z"
    }
  ]
}