Buy in bulk

POST/v1/market/items/{slug}/buy

Buys up to 100 of an item's cheapest lots in one go, each at its own price and none dearer than max_price_cents, through the same filters as the listings. If fewer match, fewer are bought; if the balance doesn't cover them all, none are. Each lot becomes a deal of its own. The same Idempotency-Key answers with the same deals.

Request

Path parameters

  • slugstringrequired

    The item's slug, from a market card.

Headers

  • Idempotency-Keystringrequired

    Any unique string for this purchase. Use a new one for each purchase, and the same one when you retry.

Request body

  • max_price_centsintegerrequired

    The most one lot may cost, in US cents.

  • quantityintegerrequired

    How many lots to buy, from 1 to 100.

  • filterobjectrequired

    Which lots count, as the filters of the listings. An empty field narrows nothing.

    Fields of filter
    • phasestring

      The phase of a Doppler or Gamma Doppler.

    • stickersstring

      with or without.

      One ofwithwithout

    • float_minnumber

      The lowest float.

    • float_maxnumber

      The highest float.

    • paint_seedinteger

      One paint seed.

curl -X POST 'https://api.rockvel.store/v1/market/items/ak-47-redline-field-tested/buy' \
  -H "Authorization: Bearer $ROCKVEL_KEY" \
  -H 'Idempotency-Key: 3c7e9a41-5d2b-4f86-b0e3-91a6d4c8f257' \
  -H 'Content-Type: application/json' \
  -d '{"max_price_cents":3300,"quantity":3,"filter":{"stickers":"with"}}'

Answer 201

A list of objects with these fields.

  • idstring

    The deal's id.

  • numberstring

    The deal's short number, the end of its id. Both sides see it, and the trade offer's message names it.

  • rolestring

    Your side of the deal.

    One ofbuyerseller

  • statusstring

    Where the deal stands.

    One ofpaidsentprotectedsettledcancelledfailedrolled_backdisputed

  • reasonstringoptional

    Why it ended up here, when there is a reason.

  • item_slugstring

    The item's slug.

  • itemobject

    The item as the lot showed it.

    Fields of item
    • asset_idstring

      Steam's id of this very item. It changes when the item changes hands.

    • namestring

      Name as Steam shows it.

    • market_hash_namestring

      Name on the Steam market. A market card has one for each.

    • image_urlstring

      Steam's icon of the item.

    • kindstring

      What sort of item it is.

      One ofweaponknifeglovesagentstickerpatchcharmgraffitimusic_kitcontainercollectibleother

    • raritystringoptional

      Rarity in Steam's words.

    • exteriorstringoptional

      Exterior as a code: FN, MW, FT, WW or BS.

    • stattrakbooleanoptional

      The item is StatTrak.

    • souvenirbooleanoptional

      The item is a Souvenir.

    • marketableboolean

      Steam lets this item be sold on its own market.

    • floatnumberoptional

      Float value, from 0 to 1. Left out for items without one.

    • paint_seedintegeroptional

      Paint seed, from 0 to 1000.

    • kill_countintegeroptional

      StatTrak's count of kills.

    • paint_indexintegeroptional

      The paint's number in the game.

    • def_indexintegeroptional

      The weapon's number in the game.

    • phasestringoptional

      The phase of a Doppler or Gamma Doppler.

    • name_tagstringoptional

      The name tag on the item.

    • inspect_linkstringoptional

      Opens the item in the game.

    • highlight_urlstringoptional

      Video of a souvenir charm's moment.

    • stickersobject[]optional

      Stickers on the item, and patches on an agent.

      Fields of stickers
      • idintegeroptional

        Its number in the game.

      • namestring

        Its name.

      • image_urlstringoptional

        Its picture.

      • slotinteger

        Which place on the item it takes.

      • wearnumberoptional

        How scraped it is, 0 for intact.

      • scalenumberoptional

        Its scale, as the game places it.

      • rotationnumberoptional

        Its rotation, as the game places it.

      • offset_xnumberoptional

        Its offset along x, as the game places it.

      • offset_ynumberoptional

        Its offset along y, as the game places it.

      • offset_znumberoptional

        Its offset along z, as the game places it.

      • tint_idintegeroptional

        Its tint's number in the game.

      • patternintegeroptional

        The pattern of a charm.

      • highlightintegeroptional

        The moment on a souvenir charm.

    • keychainsobject[]optional

      Charms on the item.

      Fields of keychains
      • idintegeroptional

        Its number in the game.

      • namestring

        Its name.

      • image_urlstringoptional

        Its picture.

      • slotinteger

        Which place on the item it takes.

      • wearnumberoptional

        How scraped it is, 0 for intact.

      • scalenumberoptional

        Its scale, as the game places it.

      • rotationnumberoptional

        Its rotation, as the game places it.

      • offset_xnumberoptional

        Its offset along x, as the game places it.

      • offset_ynumberoptional

        Its offset along y, as the game places it.

      • offset_znumberoptional

        Its offset along z, as the game places it.

      • tint_idintegeroptional

        Its tint's number in the game.

      • patternintegeroptional

        The pattern of a charm.

      • highlightintegeroptional

        The moment on a souvenir charm.

    • tagsobject[]optional

      All the labels Steam gives the item.

      Fields of tags
      • categorystring

        The label's kind, such as Collection.

      • namestring

        The label itself.

    • notesstring[]optional

      Steam's lines about this item: its match, its date of issue, what a container holds.

    • referenceobjectoptional

      A 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_centsinteger

        The price in US cents.

      • offersinteger

        How many lots of this name, or this phase, lis-skins has.

  • price_centsinteger

    The price in US cents.

  • fee_centsinteger

    The seller's fee: 1.5% of the price, rounded up to a cent.

  • offer_idstringoptional

    The Steam offer, once there is one.

  • groupstring

    The 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 ofsendcancelclose_offerdispute

  • partnerobjectoptional

    The 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_idstring

      Their SteamID64.

    • namestringoptional

      Their name on Steam now.

    • avatar_urlstringoptional

      Their avatar on Steam now.

    • member_sincedate-timeoptional

      When their Steam account was made, unless the profile is private.

    • levelintegeroptional

      Their 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_yearsintegeroptional

      Their Years of Service badge on Steam, as Steam counts it, with the level.

    • service_xpintegeroptional

      The XP of that badge.

  • paid_atdate-time

    When the lot was bought.

  • sent_atdate-timeoptional

    When the buyer could first accept the offer.

  • accepted_atdate-timeoptional

    When the item changed hands.

  • finished_atdate-timeoptional

    When the deal ended.

  • deadline_atdate-timeoptional

    When the deal moves on by itself.

  • buyer_cancels_atdate-timeoptional

    When the buyer can cancel. Left out once that time has come.

[
  {
    "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
    "number": "",
    "role": "buyer",
    "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,
    "group": "b7e41c09d2a6",
    "actions": [],
    "paid_at": "2026-11-02T09:41:17Z",
    "deadline_at": "2026-11-02T21:41:17Z",
    "buyer_cancels_at": "2026-11-02T10:11:17Z"
  }
]

Refusals

StatusCodeWhen
402not_enough_moneyThe balance doesn't cover the price.
403bannedThis account can't start anything new on Rockvel.
409no_trade_urlSet your trade link first.
409none_matchNo lot matches the price and filters now.
422bad_lotThe list is empty, a price is outside 3 to 100000000 cents, or a filter is outside its range.
422too_many_lotsMore than 100 items in one request.

Any route can also answer with the statuses on the Errors page.