Appearance
Deposit Preview
POST /api/v1/merchant/deposit-preview
Returns the prices we currently pay for the items in a user's Steam inventory — a lightweight quote surface for building a deposit cart. No records are created, nothing is reserved, and the call has no side effects, so it is safe to call as often as your UI needs.
Compared to Get Inventory, the preview responds faster and does not start the 5-minute pricing snapshot: it is a display quote. To credit a deposit at exactly these prices, create it with from_preview.
Access on request
This endpoint is enabled per merchant account. Until we enable it for yours, the call answers 403 and from_preview on Create Deposit is ignored. Ask your account manager to turn it on.
Request
Headers
| Header | Required | Description |
|---|---|---|
X-Api-Key | ✅ | Your merchant API key |
Content-Type | ✅ | application/json |
Body
| Parameter | Type | Required | Description |
|---|---|---|---|
game | string | ✅ | Game code: csgo, rust, dota2, tf2 |
partner | integer | unless items | Steam trade partner ID |
token | string | unless items | Steam trade token |
items | array | unless partner+token | Quote this exact list instead of the user's whole inventory. Up to 1000 entries. See Pricing a known cart |
items[].asset_id | string | ✅ | Steam asset ID, returned unchanged as items[].id |
items[].name | string | ✅ | Steam market_hash_name |
items[].icon_url | string | ✅ | Steam icon_url |
Pricing a known cart (items)
If you already know which items the user holds, send them in items instead of the trade link and we quote exactly that list.
json
{
"game": "csgo",
"items": [
{
"asset_id": "38029384123",
"name": "AK-47 | Redline (Field-Tested)",
"icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpout6..."
}
]
}All three fields are required. asset_id is not used for pricing — we return it unchanged so you can match our prices back to your cart.
image_url, exterior, rarity and rarity_color are not returned in this mode — you get back id, name, price and, on phased items, phase. With a trade link the response is the full item card, same as Get Inventory.
Response
json
{
"success": true,
"message": "Deposit preview fetched successfully",
"data": {
"items": [
{
"id": "38029384123",
"name": "AK-47 | Redline (Field-Tested)",
"price": 12.45,
"image_url": "https://community.cloudflare.steamstatic.com/economy/image/...",
"exterior": "Field-Tested",
"rarity": "Classified",
"rarity_color": "#d32ce6"
}
],
"total": 47,
"sum": 284.90,
"game": "csgo",
"max_items": 50
}
}| Field | Type | Description |
|---|---|---|
items | array | Items we currently accept, with the price paid for each. Items we do not accept right now are omitted |
items[].id | string | Steam asset ID — pass these to Create Deposit as asset_ids |
items[].phase | string | Doppler phase, present on phased items |
total | integer | Number of quotable items |
sum | number | Total value of all quotable items |
max_items | integer | Per-deposit item limit — a deposit with more items is rejected with too_many_items |
Price freshness
Preview prices are refreshed periodically (typically every ~10 minutes) and are stable in between. If the user takes long to decide, prices may update; a deposit created with from_preview verifies this for you and answers with the current prices when they have changed — see Deposit at Preview Prices.
Preview coverage can differ from Get Inventory
The preview is a fast display quote. The set of quotable items and their prices can occasionally differ from a Get Inventory response for the same account — the deposit itself always settles the final amount.
