Record an offer
POST/v1/orders/{id}/offer
Says which Steam offer you made for a deal, right after making it and before confirming it in Steam Guard. A closed deal answers order_moved_on: cancel that offer on Steam. Sending the same id again is safe.
Request
Path parameters
idstringrequiredThe deal's id.
Request body
offer_idstringrequiredSteam's tradeofferid, digits only.
curl -X POST 'https://api.rockvel.store/v1/orders/019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03/offer' \
-H "Authorization: Bearer $ROCKVEL_KEY" \
-H 'Content-Type: application/json' \
-d '{"offer_id":"8412653097"}'Answer 200
idstringThe deal's id.
numberstringThe deal's short number, the end of its id. Both sides see it, and the trade offer's message names it.
rolestringYour side of the deal.
One of
buyersellerstatusstringWhere the deal stands.
One of
paidsentprotectedsettledcancelledfailedrolled_backdisputedreasonstringoptionalWhy it ended up here, when there is a reason.
item_slugstringThe item's slug.
itemobjectThe item as the lot showed it.
Fields of item
asset_idstringSteam's id of this very item. It changes when the item changes hands.
namestringName as Steam shows it.
market_hash_namestringName on the Steam market. A market card has one for each.
image_urlstringSteam's icon of the item.
kindstringWhat sort of item it is.
One of
weaponknifeglovesagentstickerpatchcharmgraffitimusic_kitcontainercollectibleotherraritystringoptionalRarity in Steam's words.
exteriorstringoptionalExterior as a code: FN, MW, FT, WW or BS.
stattrakbooleanoptionalThe item is StatTrak.
souvenirbooleanoptionalThe item is a Souvenir.
marketablebooleanSteam lets this item be sold on its own market.
floatnumberoptionalFloat value, from 0 to 1. Left out for items without one.
paint_seedintegeroptionalPaint seed, from 0 to 1000.
kill_countintegeroptionalStatTrak's count of kills.
paint_indexintegeroptionalThe paint's number in the game.
def_indexintegeroptionalThe weapon's number in the game.
phasestringoptionalThe phase of a Doppler or Gamma Doppler.
name_tagstringoptionalThe name tag on the item.
inspect_linkstringoptionalOpens the item in the game.
highlight_urlstringoptionalVideo of a souvenir charm's moment.
stickersobject[]optionalStickers on the item, and patches on an agent.
Fields of stickers
idintegeroptionalIts number in the game.
namestringIts name.
image_urlstringoptionalIts picture.
slotintegerWhich place on the item it takes.
wearnumberoptionalHow scraped it is, 0 for intact.
scalenumberoptionalIts scale, as the game places it.
rotationnumberoptionalIts rotation, as the game places it.
offset_xnumberoptionalIts offset along x, as the game places it.
offset_ynumberoptionalIts offset along y, as the game places it.
offset_znumberoptionalIts offset along z, as the game places it.
tint_idintegeroptionalIts tint's number in the game.
patternintegeroptionalThe pattern of a charm.
highlightintegeroptionalThe moment on a souvenir charm.
keychainsobject[]optionalCharms on the item.
Fields of keychains
idintegeroptionalIts number in the game.
namestringIts name.
image_urlstringoptionalIts picture.
slotintegerWhich place on the item it takes.
wearnumberoptionalHow scraped it is, 0 for intact.
scalenumberoptionalIts scale, as the game places it.
rotationnumberoptionalIts rotation, as the game places it.
offset_xnumberoptionalIts offset along x, as the game places it.
offset_ynumberoptionalIts offset along y, as the game places it.
offset_znumberoptionalIts offset along z, as the game places it.
tint_idintegeroptionalIts tint's number in the game.
patternintegeroptionalThe pattern of a charm.
highlightintegeroptionalThe moment on a souvenir charm.
tagsobject[]optionalAll the labels Steam gives the item.
Fields of tags
categorystringThe label's kind, such as Collection.
namestringThe label itself.
notesstring[]optionalSteam's lines about this item: its match, its date of issue, what a container holds.
referenceobjectoptionalA hint for your price: the cheapest lot of this name on lis-skins, of this phase for a Doppler. Float, pattern and stickers do not count in it. Only in your inventory and stall, and left out when lis-skins has no such lot.
Fields of reference
price_centsintegerThe price in US cents.
offersintegerHow many lots of this name, or this phase, lis-skins has.
price_centsintegerThe price in US cents.
fee_centsintegerThe seller's fee: 1.5% of the price, rounded up to a cent.
offer_idstringoptionalThe Steam offer, once there is one.
groupstringThe same for deals that go to the buyer in one trade offer: the offer's id once there is one, before that a key that says nothing of the two sides.
actionsstring[]What you can do with the deal now.
One of
sendcancelclose_offerdisputepartnerobjectoptionalThe other side of the deal: its Steam ID always, and in the list of deals also what Steam shows of them.
Fields of partner
steam_idstringTheir SteamID64.
namestringoptionalTheir name on Steam now.
avatar_urlstringoptionalTheir avatar on Steam now.
member_sincedate-timeoptionalWhen their Steam account was made, unless the profile is private.
levelintegeroptionalTheir Steam level now, for the other side of a deal under way, unless the profile is private. Check it in Steam Guard: an account made up to look like them cannot copy it.
service_yearsintegeroptionalTheir Years of Service badge on Steam, as Steam counts it, with the level.
service_xpintegeroptionalThe XP of that badge.
paid_atdate-timeWhen the lot was bought.
sent_atdate-timeoptionalWhen the buyer could first accept the offer.
accepted_atdate-timeoptionalWhen the item changed hands.
finished_atdate-timeoptionalWhen the deal ended.
deadline_atdate-timeoptionalWhen the deal moves on by itself.
buyer_cancels_atdate-timeoptionalWhen the buyer can cancel. Left out once that time has come.
{
"id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
"number": "",
"role": "seller",
"status": "paid",
"item_slug": "ak-47-redline-field-tested",
"item": {
"asset_id": "54267934219",
"name": "AK-47 | Redline (Field-Tested)",
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
"kind": "weapon",
"rarity": "Classified Rifle",
"exterior": "FT",
"marketable": true,
"float": 0.2613,
"paint_seed": 412,
"paint_index": 282,
"def_index": 7,
"inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
"stickers": [
{
"id": 1693,
"name": "Sticker | Crown (Foil)",
"slot": 1,
"wear": 0.08
}
],
"tags": [
{ "category": "Type", "name": "Rifle" },
{ "category": "Weapon", "name": "AK-47" },
{
"category": "Collection",
"name": "The Phoenix Collection"
},
{
"category": "Quality",
"name": "Classified Rifle"
},
{ "category": "Exterior", "name": "Field-Tested" }
]
},
"price_cents": 3250,
"fee_cents": 49,
"offer_id": "8412653097",
"group": "8412653097",
"actions": [],
"paid_at": "2026-11-02T09:41:17Z",
"deadline_at": "2026-11-17T09:45:17Z"
}Refusals
| Status | Code | When |
|---|---|---|
| 403 | not_your_order | This deal isn't yours, or this step belongs to the other side. |
| 404 | no_such_order | There is no such deal. |
| 409 | order_moved_on | The deal moved on and this step no longer applies. Read it again. |
Any route can also answer with the statuses on the Errors page.