POST /v1/market/buy — Buy and Deliver to a Steam Trade URL
Buy up to 100 items and deliver them straight to any Steam trade URL you supply, paid from your settled balance. Built for wholesale and automated delivery.
partner and token fields. Purchases are funded only from your settled (reversal-safe) balance, making it suitable for wholesale volume and automated delivery workflows.
The endpoint is idempotent via the custom_id body field: retrying with the same custom_id replays the original purchase rather than buying twice, and the replayed response carries the header Idempotent-Replayed: true.
Authentication required. Send your key as Authorization: Bearer csb_pub_....
Trading capability required. Buying must be enabled for the key, and the account must be reversal-clean.
Request body
partner value (1–32 chars). Together with token, forms the destination trade URL items are delivered to.token value (1–32 chars). Together with partner, forms the destination trade URL.price_moved and nothing is charged. Strongly recommended.custom_id replays the original purchase; the replay response carries Idempotent-Replayed: true.true, skip items that are no longer available instead of failing the whole request.Response fields
Example request
Example response
Error codes
| HTTP status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | Malformed body (e.g. item_ids empty or over 100). |
| 400 | unsupported_item | One or more items cannot be delivered via this endpoint (e.g. ss_live_* ids). |
| 400 | invalid_trade_url | partner + token do not form a valid Steam trade URL. |
| 401 | invalid_api_key | Missing or invalid API key. |
| 402 | insufficient_settled_balance | Settled balance below the order total. Includes required_usd and settled_usd. |
| 402 | insufficient_balance | Balance below the order total. |
| 403 | external_buy_disabled | Kill-switch is off; the endpoint is currently disabled. |
| 403 | trading_not_enabled | Buying is not enabled for this key. |
| 403 | account_restricted | The endpoint requires a reversal-clean account. |
| 409 | item_unavailable | One or more items are no longer available. Includes unavailable_ids[]. |
| 409 | price_moved | Live total exceeded the ceiling. Includes quoted_max_usd, current_total_usd, and items[]. |
| 409 | idempotency_in_progress | A request with this custom_id is still being processed. |
| 409 | price_updating | Prices are refreshing; retry shortly. |
| 429 | rate_limit_exceeded | Too many requests. Back off for the Retry-After header value. |
| 500 | order_failed | The purchase could not be completed. |
settled_balance_usd on GET /v1/balance before a large batch, and always send max_price_usd as overcharge protection.Authorizations
Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile.
Body
1–100 unique listing ids to buy.
1 - 100 elementsSteam trade URL partner value. With token, forms the destination trade URL.
1 - 32Steam trade URL token value. With partner, forms the destination trade URL.
1 - 32Total ceiling in USD. Order is rejected with price_moved if the live total exceeds it.
Idempotency key. A retry with the same value replays the original purchase.
1 - 128If true, skip items that are no longer available instead of failing the whole request.
Response
Purchase accepted and debited from settled balance.