Total balancenull€
Bonus%

Instant available

0€

Earned instant

0€

Balance-backed instant

0€

Partnership

Partner with Skins.Cash

Five ways to work with the world's most trusted CS2 skin marketplace — from media deals and APIs to wholesale trading and tournament keys.

For wholesale customers

Skin Trading API

Do you have a huge amount of skins and are looking for a fast and simple way to trade them? Skins.Cash provides APIs to make this process as easy as pie.

Step 1

Sign in through Steam and set up a Trade URL on Skins.Cash web-site using your Steam account.

Step 2

Go to Skin-Trading-Api and click on "Generate credentials". Your x-api-token and x-api-key will be displayed. Save them as you will use them for authentication. Please note that you will not be able to retrieve your x-api-token later if you lose it.

Step 3

Use our API to make a sale or check the prices of your skins on our service. When selling skins through the Trading API the money will be sent to your Skins.Cash balance and you will be able to withdraw it using any of the available payment methods.

If you have any questions, please feel free to contact us at wholesale@skins.cash.

1

Authorization

You need 3 headers in order to authorize your request:

x-api-key — received after credentials generation.
salt — any string generated by you. This can be, for example, a timestamp. We recommend regenerating a new salt value for each API call.
signature — calculated as sha256 by concatenating the request path + salt + x-api-token.

Note that get parameters do not affect our path.

API call example

x-api-key — 1irqrxyjaz413slz0w7ajg25pb2y63hdcet91yih
x-api-token — 47a5df462f033785043991d3078026e0f20a016e
salt — 1647884752

SHA-256
sha256(api/v2/inventory/730 + salt + x-api-token)
=
sha256(api/v2/inventory/730 + 1647884752 + 47a5df462f033785043991d3078026e0f20a016e)
=
sha256(api/v2/inventory/730164788475247a5df462f033785043991d3078026e0f20a016e)
=
c69062c400a4ee65503902a35c0f81c8ebe84799556b7fffbb98ac766639324d
Here is a curl example of that call
cURL
curl --location --request GET https://skins.cash/api/v2/inventory/730 \
--header x-api-key: 1irqrxyjaz413slz0w7ajg25pb2y63hdcet91yih \
--header salt: 1647884752 \
--header signature: 1c2d829df6ea8983a5d411f505ac04518bcfb550
2

Basic response

All API responses will contain 3 properties:

success — boolean value indicating whether the request was processed successfully.
True — the request has been processed successfully.
False — is returned in case of failure.
error_code — integer containing the response error. See description in Error Codes section.
data — nullable object, containing response information, or NULL in case of request failure.

3

Endpoints

3.1. GET https://skins.cash/api/v2/docs
3.2. GET https://skins.cash/api/v2/prices/{app_id}
3.3. GET https://skins.cash/api/v2/user
3.4. GET https://skins.cash/api/v2/inventory/{app_id}
3.5. GET https://skins.cash/api/v2/inventory/{app_id}/{asset_id}
3.6. GET https://skins.cash/api/v2/trade
3.7. GET https://skins.cash/api/v2/trade/{id}

3.1.GEThttps://skins.cash/api/v2/docs— Returns OAS representation of API endpoints list. Can be used for code generators.
3.2.GEThttps://skins.cash/api/v2/prices/{app_id}— Returns Skins.Cash base prices by game.

Where app_id is the game id and has the following values:

730 for CS2,
570 for Dota2,
440 for Team Fortress,
252490 for RUST.

NOTE: the prices returned do not include any bonuses (like loyalty / welcome or any other ones). But they will be applied to your trade.

Response example
JSON
{
  "success": true,
  "error_code": 0,
  "data": [
    {
      "name": "★ Stiletto Knife | Blue Steel (Field-Tested)",
      "price": 44.21,
      "skin_count": 10
    }
  ]
}

data.0.name — skin market hash name;
data[0]price — skin price in EURO;
data.0.skin_count — the maximum amount of skins of a certain kind that can be sold on Skins.Cash. For example, you have 15 Stiletto Knifes, but the skin_count = 4, so you will only be able to sell 4 of them.

In the example above, we only showed one skin, but this request returns all the items (by game) that Skins.Cash purchases at the moment.

3.3.GEThttps://skins.cash/api/v2/user— Returns Skins.Cash user account information.
Response example
JSON
{
  "success": true,
  "error_code": 0,
  "data": {
    "bonus": 4,
    "balance": 1.02
  }
}

data.bonus — bonus percent, added to your items prices (your bonus is not displayed at this step and will be added to the final price);
data.balance — your Skins.Cash balance in EURO.

3.4.GEThttps://skins.cash/api/v2/inventory/{app_id}— Returns your inventory by steam app id.

Where app_id is the game id and has the following values:

730 for CS2,
570 for Dota2,
440 for Team Fortress,
252490 for RUST.

Response example
JSON
{
  "success": true,
  "error_code": 0,
  "data": [
    {
      "name": "★ Bayonet | Doppler (Factory New)",
      "price": 231.50,
      "class_id": "4775653951",
      "context_id": "2",
      "instance_id": "188530139",
      "asset_id": "25140931000",
      "app_id": "730",
      "price_coefficient": true
    },
    {
      "name": "M4A1-S | Cyrex (Field-Tested)",
      "price": 5.03,
      "class_id": "520029997",
      "context_id": "2",
      "instance_id": "188530139",
      "asset_id": "22875221084",
      "app_id": "730",
      "price_coefficient": false
    }
  ]
}

data.0.name — skin market hash name
data.0.price — skin price in EURO
data.0.class_id — steam skin class id
data.0.context_id — steam skin context id
data.0.instance_id — steam skin instance id
data.0.asset_id — steam skin id
data.0.app_id — steam app id (game id)
data.0.price_coefficient — applied to Doppler skins, informing that the skin price might be increased if the skin phase is one of rare ones (like Ruby, Black Pearl etc.). You can get the price of such an item by using the endpoint below.

3.5.GEThttps://skins.cash/api/v2/inventory/{app_id}/{asset_id}— Returns the price of a Doppler skin.

In order to use this endpoint, you have to call this endpoint first:
GET https://skins.cash/api/v2/inventory/{app_id}

Where app_id is the game id and has the following values:

730 for CS2,
570 for Dota2,
440 for Team Fortress,
252490 for RUST.

asset_id — item asset_id from the response of previous request.

Response example
JSON
{
  "success": true,
  "error_code": 0,
  "data": {
    "price": 564.12
  }
}

data.price — price of the skin with a certain paint index.

3.6.POSThttps://skins.cash/api/v2/trade— Creates a trade on Steam

In order to use this endpoint, you have to call this endpoint first:
GET https://skins.cash/api/v2/inventory/{app_id}

Request body (json) example
JSON
{
  "skins": [
    {
      "instance_id": "188530139",
      "class_id": "520029997",
      "asset_id": "22875221084",
      "app_id": "730"
    },
    {
      "instance_id": "1625510296",
      "class_id": "1988065996",
      "asset_id": "9699264676",
      "app_id": "570"
    }
  ],
  "trade_url": "https://steamcommunity.com/tradeoffer/new/?partner=334332623&token=NWFB6Fbt",
  "expected_min_sum": 12.32
}

skins — required parameter, list of Steam skins that you want to sell;
trade_url — optional parameter, steam user trade URL. If absent in request — trade URL set for user on Skins.Cash would be used.
expected_min_sum — optional parameter, sets the minimum price that you are willing to sell this skin for.

cURL example
cURL
curl --location --request POST 'skins.cash/api/v2/trade' \
--header 'salt: 1656004976 \
--header 'signature: 2a93aa450a6087c3bf556d7f1aa188d07dee3b7e255cd3210b29e0b595219a9b \
--header 'Content-Type: application/json' \
--data-raw ' { "items": [ { "name": "AWP | Pink DDPAT (Field-Tested)", "price": 12.03, "class_id": "2325911658", "context_id": "2", "instance_id": "480085569", "asset_id": "22529100891", "app_id": "730", "price_coefficient": false } 
Response example
JSON
{
  "success": true,
  "error_code": 0,
  "data": {
    "id": 4062480,
    "hash": "86d646bf-91cd-421a-88db-beb87f66a839",
    "sum": 5.04
  }
}

data.id — Skins.Cash trade unique identifier
hash — unique trade comment, added to each trade on Steam. Always compare this hash with the trade on Steam to prevent scam.
data.sum — final trade amount, that will be transferred to your balance after trade is processed on Steam.

3.7.GEThttps://skins.cash/api/v2/trade/{id}— Returns trade status by ID.
Response example
JSON
{
  "success": true,
  "error_code": 0,
  "data": {
    "id": 4062480,
    "hash": "f10af2c4-b0f0-4e7c-9f66-a45ce0f73500",
    "sum": 8.21,
    "steam_trade_id": "5079486596",
    "status": 21,
    "status_description": "Payed"
  }
}

id, hash, sum — same as in the previous response;
steam_trade_id — nullable, id of the trade on Steam;
status — internal Skins.Cash trade status;
status_description — human readable Skins.Cash trade status.

4

Error codes

Status nameDescriptionCode
STATUS_NEWTrade was accepted, but is not created on Steam yet0
STATUS_CREATEDTrade was created on Steam2
STATUS_COMPLETEDTrade was accepted by both parties3
STATUS_CREATION_FAILEDTrade creation failed. Most likely, because of Steam issues-1
STATUS_PAIDPayment in progress20
STATUS_PAYMENT_IN_PROGRESSTrade has been paid21
STATUS_CANCELLEDTrade was canceled by Skins.Cash. Normally this happens if the trade wasn't accepted by the user after 5 minutes6
STATUS_DECLINEDTrade was declined by user7
STATUS_ERRORAn error occurred. General error on Steam90
STATUS_VAC_BAN_ERRORVAC Ban Error91
STATUS_TRADE_URL_ERRORTrade URL Error - please check if you are using a trade URL that corresponds to your Steam account92
STATUS_HOLD_ERRORAccount Hold Error - Steam account limitation93
STATUS_ITEM_NOT_FOUNDItem(s) not found in your inventory94
STATUS_SERVICE_UNAVAILABLESteam unavailable95
STATUS_CLOSE_FOR_TRADESAccount not available for trading - most likely because of privacy issues96
STATUS_TRADE_LOCKEDTrading locked - account banned for trading97
5

Bonus types

Bonus nameHuman-readable bonus nameDescription
LOYALTY_BONUS_NAMEloyaltyAccumulative loyalty bonus for a trade
WELCOME_BONUS_NAMEwelcomeBonus applied to the first trade
GLOBAL_BONUS_DEFAULT_NAMEdefault_globalGlobal bonus set by admin
REFERRAL_BONUS_NAMEreferralAccumulative bonus depending on referees' revenue
WHOLESALE_BONUS_NAMEwholesaleWholesale bonus set by admin on request
CODE_BONUS_NAMEcodeGeneral name for any other bonus
ONETIME_WHOLESALE_BONUS_DEFAULT_NAMEdefault_onetime_wholesaleOnetime wholesale set by admin on request
PROMO_SKIN_BONUS_NAMEpromo_skinBonus for opening n part of skin feature