API
ReferenceSelling

Your Steam inventory for instant sell

Open raw markdownFor pasting into AI assistants
GET
/public/v1/instant-sell/inventory

Your Rust Steam inventory, priced for instant sell. Only Rust is supported for now, so app_id must be 252490. instant_sell_price is what we pay per copy right now, in cents. available_stock is how many more copies of that item we will take, or null when we have no price for it. Rows with a disabled_reason cannot be instant sold right now: NOT_TRADABLE (Steam is holding the item), DISABLED (we are not buying it), OVERSTOCKED (we already hold enough) or UNSTABLE_PRICE (no reliable price right now). Each row carries a token for POST /public/v1/instant-sell; these tokens only work for instant sell, not POST /public/v1/sell, and expire after 30 minutes. One row is one Steam stack, and amount is how many copies its token covers. This reads live from Steam, so it is heavily rate-limited: fetch once, then sell.

AuthorizationBearer <token>

API key generated from your account settings on the website. Send as Authorization: Bearer csd_....

In: header

Query Parameters

app_id*string
Match^[1-9]\d*$

Response Body

application/json

curl -X GET "https://example.com/public/v1/instant-sell/inventory?app_id=string"
{  "items": [    {      "token": "string",      "app_id": 1,      "steam_asset_id": "string",      "market_hash_name": "string",      "amount": -9007199254740991,      "commodity": true,      "tradable": true,      "instant_sell_price": -9007199254740991,      "available_stock": 0,      "disabled_reason": "NOT_TRADABLE",      "icon_url": "string"    }  ]}

Edit a listing PATCH

Changes the price of your active listings. Every listing holds one copy, so price is the only thing an edit changes; `amount` is not accepted. Send exactly one of `price` (cents) or `price_decay`, which puts the listing on an auto-decaying price falling from `start_price` to `end_price` over `total_hours` (24-168). Three body shapes: a single `listing_id`; a `listings` array of up to 50, each with its own price, where each row is applied in its own transaction and comes back in `results` with `ok` and, when it failed, the `error` code the single form would have returned; or a `listing_ids` array of up to 500 sharing one price, applied in one transaction, so if any id fails nothing changes, and the response lists every listing. While listing is switched off site-wide, edits fail with `LISTING_DISABLED`.

Instant sell status GET

One instant sell by the `deposit_id` returned when it was created. `TRADE_PENDING` means we are waiting for you to accept the trade offer, and `TRADE_FAILED` means the offer was declined, expired or cancelled, so nothing changed hands and nothing is paid. `PAYMENT_PENDING` means the trade went through and your payout is being processed, which can take some time, and `SUCCESS` means it is in your balance. `PAYMENT_FAILED` means the trade went through but the payout could not be completed: contact support. Poll this until `status` settles at `SUCCESS`, `TRADE_FAILED` or `PAYMENT_FAILED`. Fails with `INSTANT_SELL_NOT_FOUND` if the deposit is not one of your instant sells.