Skip to main content
POST
Create a sell order
Sell items you quoted with POST /v1/sell/quotes. A bot from the CSBoard network sends the seller a Steam trade offer, or several when split is true. Your balance is credited per offer, once that offer settles. See when the money arrives. Authentication required. Send your key as Authorization: Bearer csb_pub_.... Selling capability required. Until Instant Sell is enabled for your key this answers 403 selling_not_enabled. Idempotent. Send an Idempotency-Key header, or an external_id. A retry with the same value returns the original order with Idempotent-Replayed: true instead of selling twice.

Request body

string
required
The seller’s Steam trade URL. Use the one you quoted.
string[]
required
1 to 250 unique asset ids from the quote.
integer
default:"730"
730 CS2, 570 Dota 2, 252490 Rust. Must match the quote. Leave it out for CS2.
boolean
default:"false"
Must match the quote. true lets the sale ship as several trade offers, one per market.
number
Your floor for what this order books. It is checked against the final total, after the items are grouped into offers. If the total is lower the order is refused with 409 price_drift and nothing happens. Strongly recommended.
string
Your id for the sale (1 to 128 characters), unique per key. Retrying with it returns the original order. You can also read the order back with GET /v1/sell/orders?external_id=.

Response fields

201 with the sell order. The same object is returned by GET /v1/sell/orders/{id}, by the list endpoint and in the sell.updated webhook.
string
required
string | null
integer
required
Steam app of the sale.
string
required
pending, offer_sent, received, completed, cancelled or failed. On a sale with several offers, read each offer’s own status too.
string
required
Always "USD".
number
required
What the whole order books.
number
required
What has already reached your balance. It grows offer by offer.
datetime
required
datetime | null
The latest expected credit time across the offers, once known.
string[]
required
Every Steam trade offer the seller should expect. An offer that never went out is not listed.
SellOffer[]
required
One entry per trade offer.
string | null
cancelled_by_merchant, offer_declined, offer_expired, invalid_trade_url, item_not_tradable, reversed, price_drift or failed.

Example request

Example response

Error codes

Authorizations

Authorization
string
header
required

Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile.

Headers

Idempotency-Key
string

Request-level replay protection. Falls back to external_id when absent.

Body

application/json
trade_url
string
required
Required string length: 20 - 300
asset_ids
string[]
required

Items to sell, from a quote of the same trade_url, app_id and split.

Required array length: 1 - 250 elements
min_total_usd
number

Your floor for the total this order books. If the total the order would book is lower, it is refused with 409 price_drift and nothing happens.

external_id
string

Your id for the sale, unique per key. Sending it again returns the original order instead of creating a second one.

Required string length: 1 - 128
app_id
enum<integer>
default:730

Must match the quote. Leave it out for CS2.

Available options:
730,
570,
252490
split
boolean
default:false

Must match the quote. true lets the sale ship as several trade offers.

Response

Replay of an order already created with this Idempotency-Key or external_id (Idempotent-Replayed: true).

id
string
required
app_id
integer
required

Steam app of the sale: 730, 570 or 252490.

status
enum<string>
required
Available options:
pending,
offer_sent,
received,
completed,
cancelled,
failed
currency
enum<string>
required
Available options:
USD
total_usd
number
required

What the whole order books, in USD.

credited_usd
number
required

What has already reached your balance. Grows offer by offer.

created_at
string<date-time>
required
trade_offer_ids
string[]
required

Every Steam trade offer the seller should expect. Offers that never went out are not listed.

offers
object[]
required
external_id
string | null
unhold_at
string<date-time> | null

Latest expected credit time across the offers, once known.

fail_reason
string | null

cancelled_by_merchant, offer_declined, offer_expired, invalid_trade_url, item_not_tradable, reversed, price_drift or failed.