Sync with Waxpeer session to auto-fill API key

Create a buy order (v1)

POST/v1/create-buy-orderDeprecated

Deprecated

Use this instead: POST /v2/create-buy-order

This path is served by the same code as POST /v2/create-buy-order and answers with its contract: same rules and refusal codes, and the same response with v1's field names added.

name, game, price and amount are read from the query, as before. A request with a JSON body uses the body instead, so allow_trade_locked and filters work here too.

Changed from the old v1:

  • price and amount must be positive whole numbers; they are no longer rounded or made positive. amount is 1 to 250.
  • Any number of orders per item: You already have an order for this item is gone.
  • The balance rules of v2: the unit price ≤ your balance, all open orders ≤ 10 × your balance, at most 1000 open orders.
  • The answer has v2's order and, as before, id and msg (Placed order); filled is inside order. Refusals have v2's msg and a code.
  • Rate limit: 10 writes per 10 seconds, shared with edit and both removals (was 60 per 60 seconds).
Prices are integers. 1000 = $1.00 USD.

Parameters

NameLocationTypeDescription
api
required
querystring
name
required
querystring

Full item market hash name

amount
required
queryinteger

How many items to buy, 1 to 250

price
required
queryinteger

Highest price to pay per item, a positive whole number (1000 = $1), a multiple of its price step

game
optional
queryenum

csgo (default), dota2, rust or tf2

enum: csgo, dota2, rust, tf2

Responses

200 Successful operation or refusal

NameTypeDescription
success
optional
boolean

Whether the operation succeeded

order
optional
object

The placed order

id
optional
integer

Order id

name
optional
string

Full item market hash name

game
optional
string

csgo (default), dota2, rust or tf2

price
optional
integer

Highest price to pay per item, a positive whole number (1000 = $1), a multiple of its price step

amount
optional
integer

How many items to buy, 1 to 250

filled
optional
integer

How many items were bought so far

allow_trade_locked
optional
boolean

true: the order also buys trade-locked listings

filters
optional
object

CS2 only. Which copies the order buys; null on a plain order. Unset filters are omitted, and an unknown key is refused.

float_min
optional
number

Lowest float, 0 to 1

float_max
optional
number

Highest float, 0 to 1, not below float_min

paint_seeds
optional
array<integer>

1 to 50 paint seeds (patterns), each 0 to 1000

phase
optional
enum

Doppler phase name (e.g. Phase 1, Ruby, Emerald)

enum: Phase 1, Phase 2, Phase 3, Phase 4, Ruby, Sapphire, Emerald, Black Pearl

stickers
optional
array<object>

Applied stickers data

id
required
integer

Order id

slot
optional
integer

Sticker slot 0 to 4; absent = any slot

charm_id
optional
integer

Charm id

charm_pattern_min
optional
integer

Lowest charm pattern, 0 to 100000

charm_pattern_max
optional
integer

Highest charm pattern, 0 to 100000

by
optional
string

Waxpeer user ID (found in /user)

created
optional
string

Creation timestamp

last_update
optional
string

When the order last changed. Not in the public list

msg
optional
string

Placed order on success; otherwise why the request was refused

code
optional
enum

Stable refusal code (only when success is false)

enum: invalid_request, invalid_price, invalid_price_step, invalid_amount, invalid_filters, filters_not_editable, item_not_found, price_too_low, kyc_required, tradelink_required, price_above_balance, exposure_limit, too_many_orders, order_not_found, too_many_ids, busy, error

id
optional
integer

Order id

Response
{
  "success": true,
  "order": {
    "id": 123,
    "name": "AK-47 | Redline (Field-Tested)",
    "game": "csgo",
    "price": 12500,
    "amount": 3,
    "filled": 1,
    "allow_trade_locked": false,
    "filters": {
      "float_min": 0.15,
      "float_max": 0.18,
      "paint_seeds": [
        661,
        670
      ],
      "stickers": [
        {
          "id": 4777,
          "slot": 0
        },
        {
          "id": 55
        }
      ]
    },
    "created": "2026-10-19T10:00:00Z",
    "last_update": "2026-10-19T10:05:00Z"
  },
  "msg": "Placed order",
  "id": 123
}

429 Too many requests. Rate limit exceeded

NameTypeDescription
success
optional
boolean

Whether the operation succeeded

msg
optional
string

Placed order on success; otherwise why the request was refused

msBeforeNext
optional
number

Milliseconds before next allowed request

Response
{
  "success": false,
  "msg": "string",
  "msBeforeNext": 0
}