Buy listings
Buys the listings named in the request in a single atomic call. Nothing is bought unless every line succeeds.
Every listing holds one copy, so each line's amount must be 1. To buy
several copies of an item, send one line per listing; amount above 1
fails with LISTING_OUT_OF_STOCK.
max_price is a ceiling in cents, not an exact match: a listing that got
cheaper between your quote and this call still fills, one that got more
expensive fails with LISTING_PRICE_CHANGED. Set it high to opt out.
This does not read or modify your cart, so a bot and a browser session on the same account never interfere with each other.
Private listings are not in any feed and are bought by passing the
private_token from the share link on that line. Without it the line comes
back as LISTING_NOT_FOUND, the same as an id that does not exist.
Authorization
apiKey API key generated from your account settings on the website. Send as Authorization: Bearer csd_....
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/public/v1/purchase" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "listing_id": 1, "amount": 1, "max_price": 1 } ] }'{ "order_id": 1, "created_at": "2019-08-24T14:15:22Z", "items": [ { "order_item_id": 1, "app_id": 1, "market_hash_name": "string", "steam_asset_id": "string", "price": -9007199254740991, "amount": -9007199254740991 } ]}Deposit from Steam POST
Moves items from your Steam inventory into your backpack without listing them: we send you a trade offer, and the items land in your backpack once you accept. `items` holds `token`s from `GET /public/v1/steam-inventory` with how many of each to deposit. Nothing goes on the market and no price is involved, so listing limits and price checks do not apply — use `POST /public/v1/list` later to sell any of it. The same trade caps as `POST /public/v1/sell` apply: one request becomes one trade offer per game, a game's offer may carry at most 500 copies in total, counting `amount`, otherwise the call fails with `DEPOSIT_ITEM_LIMIT`, and at most 15 trades may be in flight at once, past which it fails with `ACTIVE_TRADE_LIMIT`. Each response `deposit_id` matches the `deposit_id` on `GET /public/v1/trades` rows, which is where you watch for the offer and its status.
Your trades GET
Your Steam trades, newest first, optionally filtered by `status`. `steam_offer_id` is the Steam trade offer id once the offer is sent. Item `value` is the market value in cents at trade time. `limit` accepts only `500` or `1000`, and the route allows one request per second — page in bulk rather than polling small pages.