Method: GetListingLimit v1

Get the current limit of how many items you can list for sale in one request. This limit is subject to change periodically (usually it only goes up, but it is possible that we may need to decrease it at some point). This is not an account-based listing limit; this is only a limit on how many items can be listed in one sale queue (via the website) or one call to ListItems (via the API).

Input

none

Output

listing_limit The current listing limit

Method: ListItems v1

Lists between 1 and 50 items for sale (upper cap subject to change). This will fail if any of the items passed in already have sales with active trade offers out. If there's a matching sale for an item that doesn't have a trade offer out, it will automatically be deleted.

Input

items A JSON-encoded array of objects. One object for each item you wish to list. Each object should contain these properties:

appid The Steam AppID of the game which owns this item (e.g. 730 for CS:GO, 440 for TF2, 570 for Dota 2)

contextid The Steam context ID which contains this item (2 for Valve games, 6 for Steam Community items, 1 for H1Z1, etc.). When you right-click on an item in your Steam inventory and copy its URL, the context ID is the second number after the hash.

assetid The Steam asset ID of the item. This is also known as just the item's id

price The desired list price for this item, before commission. Pass this in USD cents (formerly known as OP). For example, $20.00 is 2000.

addons An array of strings (possible addon strings are listed below)

featured - Feature this item (costs $3.00 if you don't have a free featured credit available)

screenshots - Inspectable CS:GO items only: take screenshots of this item and display them (Instant Field Inspection). Costs 2% of list price, minimum $0.50. If you also feature this item, then the total cost of both addons is capped to $4.50.

Output

tradeoffer_id If a trade offer was successfully sent, this is its ID as a string. If we weren't able to send a trade offer, this is null

tradeoffer_error If we weren't able to send a trade offer, this is an error message string. If there was no error, this is null

bot_id The internal OPSkins ID of the storage account to which these sales were assigned.

bot_id64 The 64-bit SteamID of the storage account to which these sales were assigned. This is the account that's sending a trade offer.

security_token The 6-character security token that is included in the trade offer message.

sales An array containing objects describing the sales that were created. Each object has these properties:

saleid The OPSkins internal ID of this sale

appid The Steam AppID for this item

contextid The Steam context ID in which this item resides in your inventory

assetid The current asset ID of this item in your inventory

market_name The name of this item

price The list price of this item in USD cents

addons An array containing strings for each addon this item has

Errors

json error BAD_INPUT:

{
"status": 3000,
"message": "'items' must be a JSON array of objects"
}

json error ACCESS_DENIED:

{
"status": 1002,
"message": "You may not list items for sale while you are under the age of 18."
}

Method: EditPriceMulti v1

Queue price updates for up to 500 items. On success, this method will return an HTTP 202 Accepted status code and will respond immediately. The actual price updates will be queued and will be processed in the background. This will fail if you attempt to queue a price update for an item which already has a queued price update. Price update errors will not be reported and will be silently dropped in the background. For example, requests to edit the prices of items you do not own or which do not exist will be accepted, but will not actually be processed.

Input

items An associative array (using PHP terminology) where keys are OPSkins sale IDs and values are new prices, in USD cents. For example, items[12345]=100&items[12346]=53 will set the price of sale 12345 to $1.00 USD and will set the price of sale 12346 to $0.53 USD.

Output

none

Errors

json error response RATE_LIMIT_EXCEEDED

{
"status": 3008,
"message": "Another EditPriceMulti request is currently processing. Please wait for it to be accepted."
}

Method: BumpItems v1

Bump one or more items you've listed for sale to the top of the browse page and the featured (default) sort for search. Will cost $0.50 per item, but will use any free bump credits you may have (e.g. from a premium membership) first.

It is possible for bumping to fail for some items in this batch and to succeed for others.

The top-level balance property will be present in this method's response, containing your up-to-date account balance.

Input

items A list of sale IDs of items you want to bump, separated by commas (max 100). For example: 1234,5678,9012

Output

sales An object whose keys are sale IDs and values are objects of the following structure:

status An ErrorCode value representing the status of the bump request for this item. Will be 1 (OK) on success.

Method: ReturnItems v1

Return one or more items you've listed for sale to your Steam accounts. Input items must be either on sale or awaiting return, and must not have an active trade offer out or queued. Under most circumstances, a trade offer won't be queued, but it's possible if, for example, you request that an item be returned and the bot is offline at the time of request.

This will (attempt to) send trade offers for all items in your input. If multiple trade offers must be sent, they will be sent in series. Therefore, you may wish to call this method separately for each bot that will be sending an offer (you can use GetSales to find out which bot is holding which item).

If the status is not OK (1), the output will still be defined (if your input was well-formed, there were no unexpected internal errors, and Steam is not completely down) in the event that the failure was due to Steam (e.g. bad trade URL, item doesn't exist anymore, trade server down).

Input

items A list of sale IDs of items you want to be returned, separated by commas. For example: 1234,5678,9012

Output

offers An array of objects, where each object in this array represents one trade offer that we sent (or tried to send)

bot_id The internal ID of the bot that sent (or tried to send) this trade offer

items An array of sale IDs which were in this offer

tradeoffer_id If the offer was successfully sent, this is its trade offer ID as a string. null on failure

tradeoffer_error If the offer couldn't be sent, this is an error message. null on success

Method: Search v1

Search active OPSkins listings for particular items. This endpoint is relatively heavily rate-limited. Currently, it is limited to 20 requests per minute. To prevent bot sniping, this endpoint will only return listings which have been publicly visible for at least ten minutes, and are not currently limited to Buyers Club members. This endpoint always returns 100 listings sorted from lowest to highest price.

Input is identical to that of the main site's search page. The most important parameters are listed here.

Input

appRequired. This is the appid_contextid pair for the app you wish to search. For example, use 730_2 to search CS:GO listings.

search_item Optional. This is the search term which will be matched to item names. This uses fuzzy matching by default. Wrap your term in quotes to only return exact matches. For example, to find items containing the exact string "case key" (case-insensitive), then this value should be "case key".

min Optional. The minimum item price to return, in USD. Note that this is different from most other currency displays which use USD cents. For example, pass 0.5 here to only search for items priced at $0.50 and up.

max Optional. The maximum item price to return, in USD.

Output

sales An array of objects containing the results of your search query. Each object has these properties:

id The item's OPSkins sale ID

amount The item's list price, in USD cents

classid The item's Steam classid at time of pickup (may have changed in trade)

instanceid The item's Steam instanceid at time of pickup (may have changed in trade)

img The item's Steam image URL (append this to https://steamcommunity-a.akamaihd.net/economy/image/)

market_name The item's name

inspect The full URL to inspect this item, if applicable. If not, then this is null

type The item's "type" as reported by Steam (e.g. Base Grade Key)

item_id The item's Steam asset ID on our storage account

stickers A string containing the stickers applied to this item, as comma-separated pairs of stickerid,wear

wear The item's floating-point wear value, between 0 and 1 if applicable. If not applicable or unknown, then null

Method: BuyItems v1

Purchase one or more items and deliver them to your OPSkins inventory. Once purchased, the item(s) can be delivered to your Steam inventory using IInventory/Withdraw. To prevent bot sniping, this endpoint will only purchase listings which have been publicly visible for at least ten minutes, and are not currently limited to Buyers Club members.

If this request succeeds, then it will contain a root-level balance property containing your new account balance after the purchase, in USD cents.

Input

saleids A comma-separated list of sale IDs for the items you wish to purchase. 300 maximum.

total The total cost of these items, in USD cents. For example, if you are purchasing a $2 item and a $1.23 item, then this should be 323. The request will fail if this does not match the actual total.

Output

items An array of objects for the items you purchased. Each object has these properties:

saleid The OPSkins sale ID of the item. This will be one of the IDs you passed in your request.

new_itemid The new OPSkins ID of the item in your OPSkins inventory. This is the ID you will pass to Withdraw in order to withdraw the item to your Steam inventory. This will become the item's sale ID if you choose to re-list it.