GET /deposit/instantSell/{game}returns the sellable inventory with prices.POST /deposit/trade/instantsubmits the selection.
{ "err": true, "success": false, "content": { "message": "…" } }. There are no machine-readable error codes, so match on or display the message string.
Authentication: send your API JWT as Authorization: Bearer <token>. Neither route requires 2FA.
Prices are integer cents. instant_sell_price is the sale price, not the amount the seller receives (see Seller fee).
Overview
1. GET /deposit/instantSell/{game}
Returns the user’s sellable inventory with an instant sell price on each row.
Response
Results are cached for up to 5 minutes. If the user’s inventory just changed, call
GET /deposit/{game}?force=1 (at most once per minute), then call this endpoint again.Row fields
Additional fields by game:
- TF2 (
440):unusual,paintcolor,craft,spell,sheen,killstreaker,class. - CS:GO (
730):type,rarity,wear,pattern,stickers,keychains. Items with a different wear or pattern are returned as separate rows. - Steam (
753):type,category,foil(bool). Only trading cards are returned.
Price levels
The same item can appear in several rows, each with its owncount, assetid, depositkey, and instant_sell_price. This happens when a stack can’t be sold entirely at a single price.
For example, a user with 5 keys may get 3 at 185¢ and 2 at 180¢, returned as two rows (as in the response above). Treat each row as a separate offer: the user can sell one row without the other.
Disabled rows
Rows with adisabled field can’t be sold. Don’t send them to the POST.
2. POST /deposit/trade/instant
Submits the selected assets for instant sell. On success, the user receives a Steam trade offer to complete the sale.
Body
integer
default:"440"
440, 730, 570, 252490, or 753.object
required
Map of
assetId → price in cents. Use exactly the instant_sell_price from the asset’s row.object
required
Map of
assetId → depositkey, copied from the asset’s row.string
required
balance, or one of payoneer, tipalti, stripe_connect, payviox_cashout. See Payout destination.string
Must be
payviox when cashout_method is payviox_cashout.string
Payout email. Required for
payviox_cashout. .ru domains are not supported.Success response
Payout destination
balance
Keeps the proceeds on the user’s Mannco balance. There is no minimum or maximum, and no email is needed.
Cashout methods
payoneer, tipalti, stripe_connect, and payviox_cashout pay out to an external account. The user must have linked that account first. Call GET /user/availableCashoutMethod to see which methods are ready.
The total is the sum of prices (after skipped_highstock removals). It must be strictly greater than the minimum and at most the maximum.
The payout is sent once the sale completes, not when you call the POST.
Error messages
All errors are returned incontent.message.
Seller fee
The seller receives the sale price minus a 5% fee, rounded in the seller’s favor. The minimum fee is 1¢, except on 1¢ items, where the seller keeps the full cent.seller-receives.js
Recommended flow
1
Load the inventory
Call
GET /deposit/instantSell/{game}.2
Show sellable rows
Display rows without
disabled and with an object depositkey. Show instant_sell_price, and optionally sellerReceives(price) next to it.3
Let the user choose a destination
Always offer
balance. For cashouts, call GET /user/availableCashoutMethod and check the min/max against the selected total.4
Submit the selection
POST only the selected assets, each with its own
instant_sell_price and depositkey.5
Confirm
Remove any
skipped_highstock assets from the summary and tell the user to accept the Steam trade offer.instant-sell.js
After the sale
Once the user accepts the Steam trade offer, the items are sold and the proceeds are sent to the chosen destination. For CS:GO, Steam Trade Protection holds the proceeds for about 8 days. UseGET /user/balance (pending) and GET /user/balance/waiting (details[].release_at, released) to show the user when the funds will be available.