NAV Navbar
javascript

Introduction

Welcome to the Shadowpay API! Use it to send trades, get information about items, buy and sell them!

If you have any questions or suggestions feel free to contact us at: [email protected]

Response Structure

Check response status before operating on response data.

Responses for all endpoints are in JSON format.

Successful API calls contain {"status":"success"} at the root in the response body.

Responses for failed requests will have the error status and contain more details on the error: {"status":"error", "error_message":"some_error"}

Naming Conventions

The project parameter in API requests and responses indicates from which game the item(s) is from.

Value Game
csgo Counter-Strike: Global Offensive
dota2 Dota 2
games SteamCommunity Items

Shadowpay CORE API v1

Buy and Sell P2P system

Authentication

Make sure to replace sometesttoken with your API token.

All endpoints require an API access token. Visit Shadowpay website to obtain it. The access token should be included in all API requests as a POST or GET parameter, as follows:

token: sometesttoken

Account

Get account balance

The above command returns JSON structured like this:

{
    "currency": "USD",
    "balance": "100",
    "deposit_balance": "200",
    "status": "success"
}

This endpoint returns your merchant account balance in USD.

HTTP Request

POST https://shadowpay.com/api/v1/get_balance

POST Parameters

Parameter Required Description
token true Authorization token

My User's Inventory

The above command returns JSON structured like this:

{
    "status": "success",
    "total": "2",
    "inv": [
      {
          "price": 0.56,
          "lowest_price": 0.56,
          "max_price": 16.8,
          "fee": 5,
          "steam_market_hash_name": "StatTrak™ MP9 | Deadly Poison (Well-Worn)",
          "assetid": "18720843311",
          "project": "csgo",
          "steam_itemtype": "SMG",
          "rarity": "Mil-Spec",
          "exterior": "Well-Worn",
          "is_stattrak": true,
          "tradable": true,
          "link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198866551033A18720843311D17007496558533575350",
          "skip_reason": false
      },
      {
          "price": 0.52,
          "lowest_price": 0.52,
          "max_price": 15.6,
          "fee": 5,
          "steam_market_hash_name": "Galil AR | Rocket Pop (Field-Tested)",
          "assetid": "15913132055",
          "project": "csgo",
          "steam_itemtype": "Rifle",
          "rarity": "Mil-Spec",
          "exterior": "Field-Tested",
          "is_stattrak": false,
          "tradable": true,
          "link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198866551033A15913132055D16907757831590787875",
          "skip_reason": false
      }
    ]
}

This endpoint returns the inventory of the sub seller, without the items that are already put on sale.

HTTP Request

POST https://shadowpay.com/api/v1/inventory

POST Parameters

Parameter Required Description
token true Authorization token
steamid true your sub seller's steamid
game true csgo or dota2

Find Items

Search for items on sale

The above command returns JSON structured like this:

{
    "data": [
        {
            "id": "289543",
            "steam_market_hash_name": "Glock-18 | Bunsen Burner (Field-Tested)",
            "price": "0.13"
        }
    ],
    "status": "success"
}

This endpoint retrieves all items available for purchase by the given market hash name

HTTP Request

POST https://shadowpay.com/api/v1/search_item

POST Parameters

Parameter Required Description
token true Authorization token
project false (csgo/dota2) Default: csgo
steam_market_hash_name true Steam Market Hash Name string

Search items on sale by item name

The above command returns JSON structured like this:

{
    "data": {
        "Glock-18 | Bunsen Burner (Field-Tested)": [
            {
                "id": "289543",
                "price": "0.13"
            }
        ]
    },
    "status": "success"
}

This endpoint retrieves items available to buy grouped by steam_market_hash_name.

To find a specific item add steam_market_hash_name[increment] = as a POST parameter.

The response array will be sorted by the time of posting in descending order

HTTP Request

POST https://shadowpay.com/api/v1/search_items_by_list_names

POST Parameters

Parameter Required Description
token true Authorization token
steam_market_hash_name[1] false Steam Market Hash Name string
steam_market_hash_name[2] false One more Steam Market Hash Name string
project false (csgo/dota2) Default: csgo
from false Filter for items put on sale after this timestamp
to false Filter for items put on sale before this timestamp

Search for similar items

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "7408371",
      "steam_market_hash_name": "Rezan The Ready | Sabre",
      "price": "1.66",
      "steam_asset_id": "18213300218",
      "time_created": "2020-04-10 18:26:16"
    },
    {
      "id": "7408370",
      "steam_market_hash_name": "PP-Bizon | Facility Sketch (Factory New)",
      "price": "0.07",
      "steam_asset_id": "17223303564",
      "time_created": "2020-04-10 18:26:12"
    },
    {
      "id": "7408283",
      "steam_market_hash_name": "Desert Eagle | Light Rail (Field-Tested)",
      "price": "1.29",
      "steam_asset_id": "17751160765",
      "time_created": "2020-04-10 18:24:18"
    },
  ],
  "status": "success"
}

This endpoint retrieves items by price range

Ordered by time_created DESC

HTTP Request

POST https://shadowpay.com/api/v1/search_similar_items

POST Parameters

Parameter Required Description
token true Authorization token
price_from false Price from
price_to false Price to
project false (csgo/dota2) Default: csgo
limit false items limit per request (default = 2000)

Get items on sale

The above command returns JSON structured like this:

{
    "data": [
        {
            "id": "297310",
            "steam_market_hash_name": "MP9 | Ruby Poison Dart (Field-Tested)",
            "price": "18.30",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-09-10 12:08:16"
        },
        {
            "id": "297311",
            "steam_market_hash_name": "Nova | Ranger (Battle-Scarred)",
            "price": "4.80",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-09-10 12:11:02"
        }
    ]
}

HTTP Request

GET https://shadowpay.com/api/v1/get_items_on_sale

GET Parameters

Parameter Required Description
token true Authorization token
project false csgo/dota2 (default = csgo)
limit false items limit per request (default = 15000)
offset false items list offset (default = 0)

Get items on sale (Filtered)

The above command returns JSON structured like this:

{
    "data": [
        {
            "id": "297310",
            "steam_market_hash_name": "MP9 | Ruby Poison Dart (Field-Tested)",
            "price": "18.30",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-09-10 12:08:16"
        },
        {
            "id": "297311",
            "steam_market_hash_name": "Nova | Ranger (Battle-Scarred)",
            "price": "4.80",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-09-10 12:11:02"
        }
    ]
}

HTTP Request

GET https://shadowpay.com/api/v1/get_items_on_sale_filtered

GET Parameters

Parameter Required Description
token true Authorization token
project false csgo/dota2 (default = csgo)
search false search by steam market hash name substring
price_from false price lower range (default = 0)
price_to false price upper range (default = 10000)
float false floatvalue
sort false [asc,desc] (default = desc)
sort_column false [price,time_created,floatvalue]
limit false items limit per request (default = 15000)
offset false items list offset (default = 0)

Get steam prices

The above command returns JSON structured like this:

{
    "data": [
        {
            "steam_market_hash_name": "★ Bayonet | Marble Fade (Minimal Wear)",
            "price": 479.17
        },
        {
            "steam_market_hash_name": "Souvenir PP-Bizon | Night Ops (Battle-Scarred)",
            "price": 11.57
        }
    ]
}

This endpoint return steam prices

HTTP Request

GET https://shadowpay.com/api/v1/get_steam_prices

GET Parameters

Parameter Required Description
token true Authorization token
project true csgo/dota2
limit false items limit per request
offset false items list offset

Get an item by id

The above command returns JSON structured like this:

{
    "item": {
        "id": "000000",
        "steam_market_hash_name": "StatTrak™ PP-Bizon | High Roller (Battle-Scarred)",
        "price": 11.57,
        "project": "csgo",
        "floatvalue": "0",
        "paintindex": null,
        "paintseed": null,
        "time_created": "2020-01-10 19:07:38"
    },
    "is_seller_online": true,
    "status": "success"
}

HTTP Request

GET https://shadowpay.com/api/v1/get_item_by_id

GET Parameters

Parameter Required Description
token true Authorization token
id true id in Shadowpay system

Buy

Buy item

The above command returns JSON structured like this:

{
  "id": "336",
  "trade_data": {
    "id": "336",
    "state": "active",
    "price": "0.25",
    "steam_trade_token": "9Kukc22f",
    "steam_trade_offer_state": null,
    "steam_tradeofferid": null,
    "steam_to_steamid": "76561111111111111",
    "causer": null,
    "time_created": "2019-08-28 20:03:22",
    "custom_id": null,
    "items": [
      {
        "state": "pending",
        "project": "csgo",
        "steam_market_hash_name": "Glock-18 | Candy Apple (Minimal Wear)",
        "steam_asset_id": "15901375629",
        "price": "0.25"
      }
    ]
  },
  "success": true,
  "status": "success"
}

HTTP Request

POST https://shadowpay.com/api/v1/buy_item

POST Parameters

Parameter Required Description
token true Authorization token
id true id in system of item that you want to buy
price false Under development
custom_id false Your unique identifier for the trade. Can be used to find and track your trade later
steamid true Steam ID64 of account to delivery trade
trade_token true Steam trade token to delivery trade

Errors

Error Code Meaning
buy_items_disabled The market is unavailable now, please try again later
wrong_params Wrong input parameters or invalid ids
no_item The item could not be found or is not available anymore
need_sum Insufficient funds - refill account balance
internal_error Shadowpay internal error - contact technical support
no_item_in_inventory The item is not in the seller's inventory
trade_yourself Can't trade with yourself
seller_offline_error Seller is offline at the moment
need_apikey Invalid API Key of seller
invalid_trade_seller_link Invalid trade link of seller
invalid_tradelink Invalid trade link
empty_user_data We can't identify your user
custom_id_exist The custom_id already exists
error_steam_or_bot Potential problems with Steam or the bot, try again later
buyer_has_buy_items_ban The buyer has an active ban on buying items on Shadowpay due to inactivity or fraudulent actions. Find ban_until and ban_reason in the response for more details.

Sell

Sell items

The above command returns JSON structured like this:

{
    "created_bid_ids": [
        "296962",
        "296963"
    ],
    "status": "success"
}

Put one to 100 items on sale. The seller user must have the enabled extension, or the application.

HTTP Request

POST https://shadowpay.com/api/v1/sell_items

POST Parameters

Parameter Required Description
token true Authorization token
steamid true user steamid
offers[0][id] true item assetid
offers[0][project] true csgo or dota2
offers[0][price] true item price
offers[1][id] true item assetid
offers[1][project] true csgo or dota2
offers[1][price] true item price
offers[100][id] true max items count assetid
offers[100][project] true max items count csgo or dota2
offers[100][price] true max items coun price

Get my items on sale

The above command returns JSON structured like this:

{
    "data": [
        {
            "steamid": "76561198856579755",
            "id": "297310",
            "steam_market_hash_name": "MP9 | Ruby Poison Dart (Field-Tested)",
            "price": "18.30",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-09-10 12:08:16"
        },
        {
            "steamid": "76561198856579755",
            "id": "297311",
            "steam_market_hash_name": "Nova | Ranger (Battle-Scarred)",
            "price": "4.80",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-09-10 12:11:02"
        }
    ]
}

Retrieve the list of your items currently on sale.

HTTP Request

GET https://shadowpay.com/api/v1/get_items_on_sale_filtered

GET Parameters

Parameter Required Description
token true Authorization token
steamid false Steam id of the subseller, if not provided will return items for all subsellers
limit false items limit per request (default = 15000)
offset false items list offset (default = 0)

Cancel items from sale

The above command returns JSON structured like this:

{
    "cancelled_items": [
        {
            "assetid": "15913132055",
            "project": "csgo",
            "state": "cancelled"
        },
        {
            "assetid": "18720843311",
            "project": "csgo",
            "state": "cancelled"
        }
    ],
    "not_cancelled_items": [],
    "status": "success"
}

Cancel the sale for one to 100 items for your subseller account. Deals in pending state will not be canceled.

HTTP Request

POST https://shadowpay.com/api/v1/cancel_items

POST Parameters

Parameter Required Description
token true Authorization token
steamid true user steamid
items[0][id] true item id in Shadowpay system
items[1][id] true item id in Shadowpay system
items[2][id] true item id in Shadowpay system
items[100][id] true max items count for cancel

Change item price

The above command returns JSON structured like this:

{
    "id": "296954",
    "new_price": 2,
    "price_rate": 2,
    "status": "success"
}

Change the price of an item on sale

HTTP Request

POST https://shadowpay.com/api/v1/change_item_price

POST Parameters

Parameter Required Description
token true Authorization token
steamid true user steamid
id true item id in Shadowpay system
price true new item price
currency true USD/EUR/RUB/PLN

Operations

Get operations by custom id

The above command returns JSON structured like this:

{
    "data": {
        "400": {
            "state": "finished",
            "price": "0.20",
            "steam_trade_token": "96rhgftT",
            "steam_trade_offer_state": "3",
            "steam_tradeofferid": "12341234",
            "steam_to_steamid": "76562222222222222",
            "steam_from_steamid": "76561111111111111",
            "causer": null,
            "time_created": "2019-09-04 23:27:09",
            "custom_id": "400",
            "items": [
                {
                    "state": "finished",
                    "project": "csgo",
                    "steam_market_hash_name": "Tec-9 | Isaac (Well-Worn)",
                    "steam_asset_id": "16560280126",
                    "price": "0.20"
                }
            ]
        }
    },
    "status": "success"
}

This endpoint retrieves trades by custom_id, you can track state of your buy transactions.

custom_id could be set as array of keys or single id.

Available States:

active — Trade created and waiting for action.

cancelled — Trade not accepted or not sent, and went to state cancelled.

finished — Trade done successfully.

HTTP Request

POST https://shadowpay.com/api/v1/list_buy_info_by_custom_id

POST Parameters

Parameter Required Description
token true Authorization token
custom_id true Comma separated custom ids

Get operations history

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1494",
      "state": "finished",
      "price": "0.45",
      "steam_trade_token": "NOuSHAho",
      "steam_trade_offer_state": "3",
      "steam_tradeofferid": "3966326233",
      "steam_to_steamid": "76561198008304019",
      "causer": null,
      "time_created": "2020-03-27 16:33:58",
      "custom_id": "marketplace_73_1585326835",
      "items": [
          {
              "state": "finished",
              "project": "csgo",
              "steam_market_hash_name": "Negev | Loudmouth (Field-Tested)",
              "steam_asset_id": "15778802746",
              "price": "0.45"
          }
      ]
    },
    {
      "id": "1487",
      "state": "cancelled",
      "price": "19.48",
      "steam_trade_token": "NOuSHAho",
      "steam_trade_offer_state": "6",
      "steam_tradeofferid": "3962034843",
      "steam_to_steamid": "76561198008304019",
      "causer": "seller",
      "time_created": "2020-03-24 16:05:33",
      "custom_id": "marketplace_73_1585065930",
      "items": [
          {
              "state": "cancelled",
              "project": "csgo",
              "steam_market_hash_name": "Negev | Loudmouth (Field-Tested)",
              "steam_asset_id": "15778802531",
              "price": "19.48"
          }
      ]
    }
  ],
  "status": "success"
}

This endpoint returns your operation history.

HTTP Request

POST https://shadowpay.com/api/v1/operations_history

POST Parameters

Parameter Required Description
token true Authorization token

Shadowpay CORE API v2

Authentication

Make sure to replace sometesttoken with your API token.

All endpoints require an API access token. Visit Shadowpay website to obtain it. The access token should be included in all API requests as Token header:

Token: sometesttoken

Account

Get account balance

The response will be structured as follows

{
    "data": {
        "currency": "USD",
        "deposit_balance": "200.00",
        "balance": "100.00"
    },
    "status": "success"
}

Returns your merchant account balance in USD.

HTTP Request

GET https://shadowpay.com/api/v2/account/balance

Get subseller inventory

The response will be structured as follows

{
    "data": [
        {
            "price": 0.14,
            "lowest_price": 0.13,
            "max_price": 4.2,
            "fee": 5,
            "steam_market_hash_name": "P250 | Valence (Field-Tested)",
            "assetid": "19779580372",
            "project": "csgo",
            "steam_itemtype": "Pistol",
            "rarity": "Mil-Spec",
            "exterior": "Field-Tested",
            "is_stattrak": false,
            "tradable": true,
            "link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198856579755A19779580372D5521567954283144992",
            "skip_reason": false
        },
        {
            "price": 0.14,
            "lowest_price": 0.13,
            "max_price": 4.2,
            "fee": 5,
            "steam_market_hash_name": "P250 | Valence (Field-Tested)",
            "assetid": "19779579835",
            "project": "csgo",
            "steam_itemtype": "Pistol",
            "rarity": "Mil-Spec",
            "exterior": "Field-Tested",
            "is_stattrak": false,
            "tradable": true,
            "link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198856579755A19779579835D5092480740222054278",
            "skip_reason": false
        },
        ...
    ],
    "metadata": {
        "total": 200
    },
    "status": "success"
}

Fetches and returns the inventory for the provided subseller from Steam.

HTTP Request

GET https://shadowpay.com/api/v2/account/inventory

Parameter Required Default Description
project true - the name of the game (see Naming Conventions)
steamid true - subseller's Steam id

Items

Get Items

The response will be structured as follows

{
    "data": [
        {
            "id": "294645",
            "steam_market_hash_name": "P2000 | Ivory (Well-Worn)",
            "price": "0.07",
            "project": "csgo",
            "floatvalue": "0",
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-07-01 18:41:20"
        },
        {
            "id": "294646",
            "steam_market_hash_name": "P2000 | Ivory (Well-Worn)",
            "price": "0.07",
            "project": "csgo",
            "floatvalue": "0",
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-07-01 18:41:20"
        },
        ...
    ],
    "metadata": {
        "limit": 20,
        "offset": 0,
        "total": 100
    },
    "status": "success"
}

Returns the list of items currently on sale at Shadowpay

HTTP Request

GET https://api.shadowpay.com/api/v2/items

Query Parameters

Parameter Required Default Description
project false csgo the name of the game (see Naming Conventions)
steam_market_hash_name false - an array of steam hash names to filter the items
search false - search by item's steam hash name
price_from false -
price_to false - filter by a price range
date_from false -
date_to false - filter by the date of bid
sort_column false time_created [price_market,time_created,floatvalue]
sort_dir false desc [asc,desc]
limit false - items limit per request
offset false - items list offset
group_by false - [steam_market_hash_name]

Grouping

Grouped response will be structured as follows

{
    "data": {
        "P2000 | Ivory (Well-Worn)": {
            "id": "296865",
            "steam_market_hash_name": "P2000 | Ivory (Well-Worn)",
            "price": "0.07",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-08-04 10:50:33"
        },
        "P2000 | Ivory (Field-Tested)": {
            "id": "297683",
            "steam_market_hash_name": "P2000 | Ivory (Field-Tested)",
            "price": "1.00",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-10-02 15:32:00"
        },
        "P2000 | Ivory (Battle-Scarred)": {
            "id": "296862",
            "steam_market_hash_name": "P2000 | Ivory (Battle-Scarred)",
            "price": "2.00",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-08-04 10:50:33"
        }
    },
    "status": "success"
}

Items can be grouped by their steam hash name using group_by query parameter

group_by=steam_market_hash_name

Get Single Item

The response will be structured as follows

{
    "data": {
        "item": {
            "id": "296871",
            "steam_market_hash_name": "P2000 | Ivory (Well-Worn)",
            "price": "0.07",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-08-04 10:50:33"
        },
        "is_seller_online": false
    },
    "status": "success"
}

Returns the item information for the provided item id and whether the seller is online at the moment

HTTP Request

GET https://api.shadowpay.com/api/v2/items/{id}

Url Parameters

Parameter Required Description
id true the id of the item

Steam Items

Get Steam Items

The response will be structured as follows

{
    "data": [
        {
            "steam_market_hash_name": "★ Bayonet | Marble Fade (Minimal Wear)",
            "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTx......",
            "price": "489.33"
        },
        {
            "steam_market_hash_name": "Souvenir PP-Bizon | Night Ops (Battle-Scarred)",
            "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTx......",
            "price": "10.82"
        },
        ...
    ],
    "metadata": {
        "limit": 20,
        "offset": 0,
        "total": 16195
    },
    "status": "success"
}

Returns the list of steam items of provided project

HTTP Request

GET https://api.shadowpay.com/api/v2/steam_items

Query Parameters

Parameter Required Default Description
project false csgo the name of the game (see Naming Conventions)
steam_market_hash_name false - an array of steam hash names to filter the items
search false - search by item's steam hash name
sort_column false - [steam_market_hash_name,price]
sort_dir false desc [asc,desc]
limit false - items limit per request
offset false - items list offset

Buy

Request example

{
    "id": "297921",
    "steamid": "76561198064929874",
    "trade_token": "abcdef"
}

Response example

{
    "status": "success",
    "id": "2235",
    "trade_data": {
        "id": "2235",
        "state": "active",
        "price": "0.13",
        "steam_trade_token": "zPvo-jv3",
        "steam_trade_offer_state": null,
        "steam_tradeofferid": null,
        "steam_tradeofferids": null,
        "steam_to_steamid": "76561198064929874",
        "steam_from_steamid": "76561198856579755",
        "seller_sold": "0",
        "causer": null,
        "time_created": "2020-11-04 13:31:01",
        "custom_id": null,
        "items": [
            {
                "id": "297921",
                "state": "pending",
                "type": "bid",
                "project": "csgo",
                "item_id": "5538",
                "steam_market_hash_name": "P250 | Valence (Field-Tested)",
                "steam_asset_id": "19643581752",
                "price": "0.13"
            }
        ]
    }
}

Buy an item for your subseller

HTTP Request

POST https://api.shadowpay.com/api/v2/buy

POST Parameters

Parameter Required Description
id true the id of the item you want to buy
steamid true Steam id of your subseller
trade_token true trade token of your subseller

Offers

Make offers

Request example

{
    "steamid": "76561198856579755",
    "offers": [
        {
            "id": "19643581752",
            "price": 0.14,
            "project": "csgo"
        },
        {
            "id": "19643581752",
            "price": 0.14,
            "project": "csgo",
            "currency": "USD"
        }
    ]
}

Response example

{
    "status": "success",
    "created_bid_ids": [1000, 1001]
}

Create sell offers on Shadowpay for items from your subseller's inventory.

HTTP Request

POST https://api.shadowpay.com/api/v2/offers

POST Parameters

Parameter Required Description
steamid true Steam id of your subseller
offers true an array of up to 250 offers
offers.*.id true the id of the item you want to sell
offers.*.project true the name of the game the item is from (see Naming Conventions)
offers.*.price true the price you want to put on the item
offers.*.currency false you can see the list of available currencies at shadowpay.com (default = USD)

Get Offers

The response will be structured as follows

{
    "data": [
        {
            "steamid": "76561198856579755",
            "id": "297921",
            "steam_market_hash_name": "P250 | Valence (Field-Tested)",
            "price": "0.14",
            "project": "csgo",
            "floatvalue": null,
            "paintindex": null,
            "paintseed": null,
            "time_created": "2020-10-30 17:17:04"
        }
    ],
    "metadata": {
        "limit": 15000,
        "offset": 0,
        "total": 1
    },
    "status": "success"
}

Get active offers from all or one of your subsellers

HTTP Request

GET https://api.shadowpay.com/api/v2/offers

Query Parameters

Parameter Required Default Description
steamid false - Steam id of your subseller (if not provided will return offers from all subsellers)
sort_column false price [id,price,time_created]
sort_dir false desc [asc,desc]
limit false - items limit per request
offset false - items list offset

Cancel offers

Response example

{
    "status": "success",
    "cancelled_items": [
        {
            "assetid": "19643581752",
            "project": "csgo",
            "state": "pending"
        }    
    ],
    "not_cancelled_items": []
}

Cancel up to 100 offers

HTTP Request

DELETE https://api.shadowpay.com/api/v2/offers

Query Parameters

Parameter Required Description
steamid true Steam id of the subseller who made the offer
item_ids true an array of up to 100 offer ids you want to cancel

Update offers

Request example

{
    "steamid": "76561198856579755",
    "offers": [
        {
            "id": "297921",
            "price": 3.14
        },
        {
            "id": "297922",
            "price": 3.14,
            "currency": "USD"
        }
    ]
}

Response example

{
    "status": "success",
    "bids": [
        {
            "status": "success",
            "id": "297921",
            "new_price": 3.14,
            "price_rate": 1
        },
        {
            "status": "success",
            "id": "297922",
            "new_price": 3.14,
            "price_rate": 1
        }
    ]
}

Update one or several of your active offers to change the price or the currency.

HTTP Request

PATCH https://api.shadowpay.com/api/v2/offers

POST Parameters

Parameter Required Description
steamid true Steam id of your subseller
offers true an array of up to 250 offers
offers.*.id true the id of the offer you want to update
offers.*.price true the price you want to change
offers.*.currency false you can see the list of available currencies at shadowpay.com (default = USD)

Update single offer

Request example

{
    "steamid": "76561198856579755",
    "price": 3.14,
    "currency": "USD"
}

Response example

{
    "status": "success",
    "id": "297922",
    "new_price": 3.14,
    "price_rate": 1
}

Update an offer's price or currency.

HTTP Request

PATCH https://api.shadowpay.com/api/v2/offers/{id}

Url Parameters

Parameter Required Description
id true the id of the offer you want to update

POST Parameters

Parameter Required Description
steamid true Steam id of your subseller
price true the price you want to change
currency false you can see the list of available currencies at shadowpay.com (default = USD)

Operations

The response will be structured as follows

{
    "data": [
        {
            "id": "2235",
            "state": "active",
            "price": "0.13",
            "steam_trade_token": "zPvo-jv3",
            "steam_trade_offer_state": "9",
            "steam_tradeofferid": "4285501167",
            "steam_to_steamid": "76561198064929874",
            "causer": null,
            "time_created": "2020-11-04 13:31:01",
            "custom_id": "123",
            "type": "buy",
            "items": [
                {
                    "state": "active",
                    "project": "csgo",
                    "steam_market_hash_name": "P250 | Valence (Field-Tested)",
                    "steam_asset_id": "19643581752",
                    "price": "2.85"
                }
            ]
        },
        {
            "id": "2178",
            "state": "cancelled",
            "price": "0.06",
            "steam_trade_token": "zPvo-jv3",
            "steam_trade_offer_state": "9",
            "steam_tradeofferid": "4267088845",
            "steam_to_steamid": "76561198064929874",
            "causer": "seller",
            "time_created": "2020-10-19 21:41:22",
            "custom_id": "324",
            "type": "buy",
            "items": [
                {
                    "state": "cancelled",
                    "project": "csgo",
                    "steam_market_hash_name": "P2000 | Ivory (Well-Worn)",
                    "steam_asset_id": "19626534023",
                    "price": "0.06"
                }
            ]
        }
    ],
    "metadata": {
        "limit": 4000,
        "offset": 0,
        "total": 2
    },
    "status": "success"
}

Returns the list of items currently on sale at Shadowpay

HTTP Request

GET https://api.shadowpay.com/api/v2/operations

Query Parameters

Parameter Required Default Description
states false - an array of states the operations can be filtered with
custom_ids false - an array of custom ids the operations can be filtered with
date_from false -
date_to false - filter by the date of operation
sort_column false time_created [id,time_created,price]
sort_dir false desc [asc,desc]
limit false 4000 operations limit per request
offset false 0 operations list offset
group_by false - [custom_id]

Grouping

Grouped response will be structured as follows

{
    "data": {
        "123": {
            "id": "2235",
            "state": "active",
            "price": "0.13",
            "steam_trade_token": "zPvo-jv3",
            "steam_trade_offer_state": "9",
            "steam_tradeofferid": "4285501167",
            "steam_to_steamid": "76561198064929874",
            "causer": null,
            "time_created": "2020-11-04 13:31:01",
            "custom_id": "123",
            "items": [
                {
                    "state": "active",
                    "project": "csgo",
                    "steam_market_hash_name": "P250 | Valence (Field-Tested)",
                    "steam_asset_id": "19643581752",
                    "price": "2.85"
                }
            ]
        },
        "324": {
            "id": "2178",
            "state": "cancelled",
            "price": "0.06",
            "steam_trade_token": "zPvo-jv3",
            "steam_trade_offer_state": "9",
            "steam_tradeofferid": "4267088845",
            "steam_to_steamid": "76561198064929874",
            "causer": "seller",
            "time_created": "2020-10-19 21:41:22",
            "custom_id": "324",
            "items": [
                {
                    "state": "cancelled",
                    "project": "csgo",
                    "steam_market_hash_name": "P2000 | Ivory (Well-Worn)",
                    "steam_asset_id": "19626534023",
                    "price": "0.06"
                }
            ]
        }
    },
    "status": "success"
}

Operations can be grouped by their custom ids using group_by query parameter

group_by=custom_id

Pay by Steam Skins

Shadowpay offers functionality to refill balance on your website using Steam Skins.

Transaction flow

  1. User clicks the link (button) "Pay By Steam Skin";
  2. Website generates a request to Shadowpay and returns payment link;
  3. Website redirects user to Shadowpay payment link;
  4. User installs the extension or application for automatic, fast, secure trading;
  5. User chooses the skins from his inventory, puts them on sale and waits for buyers. The extension or application sends items to the buyer, the user confirms the trade. For every successfully sold skin your website will receive an IPN with the amount of money for which the item was sold, it's the merchant's responsibility to transfer the amount to the user's account. The amount will also be added to the merchant account on Shadowpay and can be withdrawn.

Getting started

  1. You should generate Public hash and Secret hash on Shadowpay merchant panel.
  2. Set the callback url to where the IPN (Instant Payment Notifications) will be sent.

Create payment link

The above command returns JSON structured as follows:

{
    "token": "a1d579731b5fd7b7cb8f64c641f73111",
    "url": "https:\/\/shadowpay.com\/en\/pay?token=a1d579731b5fd7b7cb8f64c641f73111",
    "status": "success"
}
$params['signature'] = hash('sha256', $params['order_id'] . $params['amount'] . $params['currency'] . SECRET_HASH);

To initiate the payment the client serer should make the following request to get the payment link.

The user then should be redirected to that payment link to complete the payment.

HTTP Payment Request

POST https://shadowpay.com/en/pay/PUBLIC_HASH

POST Parameters

Parameter Required Description
account true Users account "id" in your database. Can be steamid. Use INT(unsigned) values only.
order_id true Unique order id to identify the payment
security_steam_id true User's steamid
currency true 'USD' - for now only USD is supported
signature true Generated Signature
steam_trade_token false User's trade token
amount false Amount in USD

Receive IPN (Instant Payment Notification)

The callback will be performed at the URL you specify with the parameters listed below.

https://example.com/result?
   amount=6.66
   &token=6764d01a08bdfc50
   &account=demo
   &order_id=12345
   &currency=USD
   &trade_id=786f1d3cccb2828c
   &create_date=2017-06-08+21%3A48%3A02
   &status=complete
   &transaction_id=45f7fa62-622f-48bc-b606-dccd2c662bad
   &ip=0.0.0.0
   &hash=8e27a52faba8b7253e94b1c2b0898ff11713c8dd80d60a112922bf66336fd331

IPN will be sent for each skin the user has sold.

Use this code to validate IPN request.

$string = $_REQUEST['order_id'] . $_REQUEST['amount'] . $_REQUEST['currency'] . $_REQUEST['trade_id'] . SECRET_HASH;
$hash = hash('sha256', $string);

if ($hash !== $_REQUEST['hash']){
    die('wrong params');
}

GET Parameters structure

Parameter Description
type Payment type, in this case it will be constant - "payment"
amount Amount in USD
token Payment token that was returned on "Create payment link" method
account Users account "id" in your database. Can be steamid. Use INT(unsigned) values only.
order_id Unique order id for identify payment
trade_id Unique id for the trade of one of the items sold in the payment
transaction_id Unique id of payment
currency 'USD' - for now only USD is supported
status Payment status, constant - "complete"
hash Generated Signature
create_date Date of payment

Composite key transaction_id+trade_id is unique key to identify the transaction

Your server should send a string response to the IPN request to complete the transaction.

String "ok" for a successfully processed transaction. String "error" in case of an error.

In case of repeated IPN requests the partner system should respond with the result of the previous transaction without replenishing/crediting the user's account.

If the partner system does not respond with "ok", Shadowpay will continue to send the notifications at following intervals: +1 min +4 min +12 min +40 min +2 hour +7 hour +24 hour

Generic Errors

The Shadowpay API uses the following error messages in general:

Error Code Meaning
internal_error Your request is invalid.
wrong_params Check your params or not found any suitable data
wrong_token Your API token is wrong or not set
wrong_method Check your params or not found any suitable api method
disabled Temporary disabled. Try later
no_access You have no access to request this endpoint
validation_error Data validation not passed. Check your params