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 |
rust | RUST |
Shadowpay CORE API v1
Buy and Sell P2P system
Authentication
Make sure to replace
sometesttoken
with your API token.
All endpoints require a Merchant 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://api.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://api.shadowpay.com/api/v1/inventory
POST Parameters
Parameter | Required | Description |
---|---|---|
token | true | Authorization token |
steamid | true | your sub seller's steamid |
game | true | (csgo/dota2/rust) |
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://api.shadowpay.com/api/v1/search_item
POST Parameters
Parameter | Required | Description |
---|---|---|
token | true | Authorization token |
project | false | (csgo/dota2/rust) 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] =
The response array will be sorted by the time of posting in descending order
HTTP Request
POST https://api.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/rust) 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://api.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/rust) 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://api.shadowpay.com/api/v1/get_items_on_sale
GET Parameters
Parameter | Required | Description |
---|---|---|
token | true | Authorization token |
project | false | csgo/dota2/rust (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://api.shadowpay.com/api/v1/get_items_on_sale_filtered
GET Parameters
Parameter | Required | Description |
---|---|---|
token | true | Authorization token |
project | false | csgo/dota2/rust (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://api.shadowpay.com/api/v1/get_steam_prices
GET Parameters
Parameter | Required | Description |
---|---|---|
token | true | Authorization token |
project | true | csgo/dota2/rust |
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://api.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://api.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://api.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/dota2/rust |
offers[0][price] | true | item price |
offers[1][id] | true | item assetid |
offers[1][project] | true | csgo/dota2/rust |
offers[1][price] | true | item price |
offers[100][id] | true | max items count assetid |
offers[100][project] | true | max items count csgo/dota2/rust |
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://api.shadowpay.com/api/v1/get_my_items_on_sale
GET Parameters
Parameter | Required | Description |
---|---|---|
token | true | Authorization token |
project | false | the name of the game (see Naming Conventions) (default = csgo) |
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://api.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://api.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://api.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://api.shadowpay.com/api/v1/operations_history
POST Parameters
Parameter | Required | Description |
---|---|---|
token | true | Authorization token |
Shadowpay CORE API v2
Entities
Steam Item
Example
{
"id": 18210,
"project": "csgo",
"steam_market_hash_name": "★ Stiletto Knife | Doppler (Factory New) Sapphire",
"exterior": "Factory New",
"type": "Knife",
"subcategory": "★ Stiletto Knife",
"collection": null,
"phase": "Sapphire",
"suggested_price": 2532.42,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpovbSsLQJfwOfBfThW-NOJlY20hPbkI7PYhG5u5cRjiOXE_JbwjGu4ohQ0JwavdcTCJxg9ZF_WqADsyOm715Lpu5SYySFiuCV07XnczhGyhUlMPeI-16CWSl6cGeUXS8Mn9SuW"
}
Represents a single CSGO, DOTA2, RUST item
Parameters
Parameter | Type | Nullable | |
---|---|---|---|
id | int | ||
project | enum | csgo/dota2/rust | |
steam_market_hash_name | string | ||
icon | string | ||
exterior | string | ||
type | string | ||
subcategory | string | ||
collection | string | ✓ | |
phase | string | ✓ | |
suggested_price | float | ||
is_stattrak | bool |
Inventory Item
Example
{
"id": 3507,
"project": "csgo",
"steam_market_hash_name": "Negev | Loudmouth (Field-Tested)",
"exterior": "Field-Tested",
"type": "Machinegun",
"subcategory": "Negev",
"collection": "The Falchion Collection",
"phase": null,
"suggested_price": 0.39,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpouL-iLhFf0Ob3fzhF6cqJlY6Fnv_9P7rFmXlu5cB1g_zMu4ms3FHg-RA6Yz30cYLDdQ9saFrW8wW8yOnm1pDpv8vNzHMyuXIq5inD30vg_iCKYUg",
"asset_id": 20516184590,
"tradable": true,
"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198064929874A20516184590D14145255354206648200",
"skip_reason": "is-used",
"min_price": 0.1,
"max_price": 11.7
}
Represents a steam item in subseller's inventory
Parameters
Parameter | Type | Nullable | |
---|---|---|---|
id | int | ||
project | enum | csgo/dota2/rust | |
steam_market_hash_name | string | ||
icon | string | ||
exterior | string | ||
type | string | ||
subcategory | string | ||
collection | string | ✓ | |
phase | string | ✓ | |
suggested_price | float | ||
is_stattrak | bool | ||
asset_id | int | ||
tradable | bool | ||
link | string | ||
skip_reason | string | ✓ | |
min_price | float | ||
max_price | float |
Item
Example
{
"id": 294528,
"price": 0.03,
"floatvalue": 0,
"paintindex": null,
"paintseed": null,
"link": null,
"time_created": "2020-07-01 04:44:50",
"steam_item": {
"id": 5740,
"project": "csgo",
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Rifle",
"subcategory": "AUG",
"collection": "The Italy Collection",
"phase": null,
"suggested_price": 0.04,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot6-iFBRv7OPFcgJO5du-gM6OxfakZbnQw28H65Eg2L2RrYin3ADjrkJqYWz0Jo6UdVNrYV3SqAW9366x0l1OAhlP"
},
"stickers": []
}
Represents an item on sale on Shadowpay
Parameters
Parameter | Type | Nullable | |
---|---|---|---|
id | int | ||
price | float | ||
floatvalue | float | ✓ | |
paintindex | int | ✓ | |
paintseed | int | ✓ | |
link | string | ✓ | |
time_created | string | datetime | |
steam_item | Steam_item | ||
stickers[] | Steam_item[] |
Offer
Example
{
"id": 302497,
"price": 40,
"floatvalue": null,
"paintindex": null,
"paintseed": null,
"time_created": "2021-02-09 12:49:53",
"steam_item": {
"id": 3507,
"project": "csgo",
"steam_market_hash_name": "Negev | Loudmouth (Field-Tested)",
"exterior": "Field-Tested",
"type": "Machinegun",
"subcategory": "Negev",
"collection": "The Falchion Collection",
"phase": null,
"suggested_price": 0.39,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpouL-iLhFf0Ob3fzhF6cqJlY6Fnv_9P7rFmXlu5cB1g_zMu4ms3FHg-RA6Yz30cYLDdQ9saFrW8wW8yOnm1pDpv8vNzHMyuXIq5inD30vg_iCKYUg"
},
"stickers": [],
"asset_id": "20516184590",
"state": "active",
"price_with_fee": 38,
"steamid": "XXXXXXXXXXXXXXXXX",
"custom_id": null
}
An offer to sell an item at Shadowpay
Parameters
Parameter | Type | Nullable | |
---|---|---|---|
id | int | ||
price | float | ||
floatvalue | float | ✓ | |
paintindex | int | ✓ | |
paintseed | int | ✓ | |
time_created | string | datetime | |
steam_item | Steam_item | ||
stickers[] | Steam_item[] | ||
asset_id | string | ||
state | enum | active,pending,reserved,cancelled,finished | |
price_with_fee | float | ||
steamid | string | steam id of your subseller | |
custom_id | string | ✓ |
Purchase Order
Example
{
"id": 302452,
"state": "active",
"price": 10,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 21:19:39",
"custom_id": null,
"steam_item": {
"id": 6585,
"project": "csgo",
"steam_market_hash_name": "R8 Revolver | Bone Mask (Battle-Scarred)",
"exterior": "Battle-Scarred",
"type": "Pistol",
"subcategory": "R8 Revolver",
"collection": "The Bank Collection",
"phase": null,
"suggested_price": 0.03,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopL-zJAt21uH3Yi19-N2mkb-DkvbiKoTdl3lW7Ysl3OzHoN323VGx-xJvYWymLIOTewE7ZV6D-gLsxrjn0Ze66cibmnUwpGB8ssJ0HHKV"
}
}
A purchase order at Shadowpay to buy your desired item as soon it is available
Parameters
Parameter | Type | Nullable | |
---|---|---|---|
id | int | ||
state | enum | active,pending,reserved,cancelled,finished | |
price | float | ||
steamid | string | ||
time_created | string | datetime | |
custom_id | string | ✓ | |
steam_item | Steam_item |
Operation
Example
{
"id": 2636,
"type": "buy",
"state": "active",
"price": 0.36,
"steam_trade_token": "zPvo-jv3",
"steam_trade_offer_state": "9",
"steam_tradeofferid": "4437550412",
"causer": null,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 22:16:26",
"custom_id": null,
"items": [
{
"id": 300878,
"price": 0.39,
"floatvalue": null,
"paintindex": null,
"paintseed": null,
"time_created": "2021-02-03 13:42:01",
"steam_item": {
"id": 18531,
"project": "csgo",
"steam_market_hash_name": "P250 | Cassette (Factory New)",
"exterior": "Factory New",
"type": "Pistol",
"subcategory": "P250",
"collection": "The Fracture Collection",
"phase": null,
"suggested_price": 0.52,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopujwezhjxszYI2gS09-3h5OOg-PxDLfYkWNF18lwmO7Eu9Tw3gay8xBta23xJdTGJ1Q9Zl-F81TvkOi-jZa67pjOz3U16XYl5n7D30vgEiB9r4A"
},
"stickers": []
}
]
}
Represents and offer from one of yous subsellers on Shadowpay
Parameters
Parameter | Type | Nullable | |
---|---|---|---|
id | int | ||
type | enum | buy,sell,sell_buy | |
state | enum | active,cancelled,finished | |
price | float | ||
steam_trade_token | string | only for merchants | |
steam_trade_offer_state | string | only for merchants | |
steam_tradeofferid | string | only for merchants | |
causer | string | ✓ | only for merchants |
steamid | string | only for merchants | |
custom_id | string | ✓ | only for merchants |
time_created | string | datetime | |
items | Item[]/Offer[] | an array of items or offers, based on type |
Shadowpay Merchant API v2
Auth
Make sure to replace
sometesttoken
with your Merchant API token.
All endpoints require a Merchant API access token. Visit Shadowpay website to obtain it.
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://api.shadowpay.com/api/v2/merchant/balance
Set Custom Currency
Request example
{
"name": "Coin",
"rate": 1.2
}
Response example
{
"status": "success"
}
HTTP Request
POST https://api.shadowpay.com/api/v2/merchant/currency
POST Parameters
To disable custom currency - pass null
into values.
Parameter | Required | Description |
---|---|---|
name | ✓ | name of currency (alpha-numeric: [a-z0-9_-]) |
rate | ✓ | rate to convert (> 0 and < 10000) |
Disable Custom Currency
Response example
{
"status": "success"
}
HTTP Request
DELETE https://api.shadowpay.com/api/v2/merchant/currency
Get Items
Request example
https://api.shadowpay.com/api/v2/merchant/items?token={{TOKEN}}&sort_column=discount&sort_dir=desc&steam_market_hash_name[]=AUG | Contractor (Minimal Wear)&steam_market_hash_name[]=Five-SeveN | Urban Hazard (Minimal Wear)&search=Contractor&types[]=Pistol&types[]=Knife&exteriors[]=Minimal Wear&exteriors[]=Field-Tested&date_from=2021-01-01 00:00:00&price_from=1&price_to=100
The response will be structured as follows
{
"data": [
{
"id": 294528,
"price": 0.03,
"floatvalue": 0,
"paintindex": null,
"paintseed": null,
"time_created": "2020-07-01 04:44:50",
"steam_item": {
"id": 5740,
"project": "csgo",
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Rifle",
"subcategory": "AUG",
"collection": "The Italy Collection",
"phase": null,
"suggested_price": 0.04,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot6-iFBRv7OPFcgJO5du-gM6OxfakZbnQw28H65Eg2L2RrYin3ADjrkJqYWz0Jo6UdVNrYV3SqAW9366x0l1OAhlP",
"rarity": "Mil-Spec"
},
"stickers": []
},
...
],
"metadata": {
"limit": 20,
"offset": 0,
"total": 100
},
"status": "success"
}
Returns the list of items currently on sale at Shadowpay as an array of Item objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/merchant/items
Query Parameters
Parameter | Default | Description |
---|---|---|
project | csgo | the name of the game (see Naming Conventions) |
steam_market_hash_name | - | an array of steam hash names to filter the items |
types | - | an array of types to filter the items |
exteriors | - | an array of exteriors to filter the items |
rarities | - | an array of rarities to filter the items |
search | - | search by item's steam hash name |
price_from | - | |
price_to | - | filter by a price range |
date_from | - | |
date_to | - | filter by the date of bid |
sort_column | time_created | [price_market,time_created,floatvalue] |
sort_dir | desc | [asc,desc] |
limit | - | items limit per request |
offset | - | items list offset |
group_by | - | [steam_market_hash_name] |
Grouping
Grouped response will be structured as follows
{
"data": {
"AUG | Contractor (Minimal Wear)": {
"id": 294528,
"price": 0.03,
"floatvalue": 0,
"paintindex": null,
"paintseed": null,
"time_created": "2020-07-01 04:44:50",
"steam_item": {
"id": 5740,
"project": "csgo",
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Rifle",
"subcategory": "AUG",
"collection": "The Italy Collection",
"phase": null,
"suggested_price": 0.04,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot6-iFBRv7OPFcgJO5du-gM6OxfakZbnQw28H65Eg2L2RrYin3ADjrkJqYWz0Jo6UdVNrYV3SqAW9366x0l1OAhlP"
},
"stickers": []
},
},
"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": 294528,
"price": 0.03,
"floatvalue": 0,
"paintindex": null,
"paintseed": null,
"time_created": "2020-07-01 04:44:50",
"steam_item": {
"id": 5740,
"project": "csgo",
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Rifle",
"subcategory": "AUG",
"collection": "The Italy Collection",
"phase": null,
"suggested_price": 0.04,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot6-iFBRv7OPFcgJO5du-gM6OxfakZbnQw28H65Eg2L2RrYin3ADjrkJqYWz0Jo6UdVNrYV3SqAW9366x0l1OAhlP",
"rarity": "Mil-Spec"
},
"stickers": []
},
"is_seller_online": false
},
"status": "success"
}
Returns the item information for the provided item id and whether the seller is online at the moment. The item parameter in response is an Item object.
HTTP Request
GET https://api.shadowpay.com/api/v2/merchant/items/{id}
Url Parameters
Parameter | Required | Description |
---|---|---|
id | ✓ | the id of the item |
Get Item Prices
The response will be structured as follows
{
"data": [
{
"steam_market_hash_name": "Desert Eagle | Bronze Deco (Field-Tested)",
"price": "0.18",
"volume": "4"
},
{
"steam_market_hash_name": "Five-SeveN | Kami (Minimal Wear)",
"price": "0.95",
"volume": "1"
},
{
"steam_market_hash_name": "Five-SeveN | Nightshade (Field-Tested)",
"price": "1.67",
"volume": "1"
},
{
"steam_market_hash_name": "G3SG1 | Stinger (Field-Tested)",
"price": "0.29",
"volume": "9"
},
{
"steam_market_hash_name": "Galil AR | Kami (Minimal Wear)",
"price": "1.00",
"volume": "1"
}
],
"status": "success"
}
Returns the list of items currently on sale at Shadowpay, wth minimal price and volume(quantity) of items
HTTP Request
GET https://api.shadowpay.com/api/v2/merchant/items/prices
Query Parameters
Parameter | Default | Description |
---|---|---|
project | csgo | the name of the game (see Naming Conventions) |
Get Steam Items
The response will be structured as follows
{
"data": [
{
"id": 2,
"project": "csgo",
"steam_market_hash_name": "★ Bayonet | Marble Fade (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Knife",
"subcategory": "★ Bayonet",
"collection": null,
"phase": null,
"suggested_price": 557.7,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpotLu8JAllx8zJfAJP7c60mIW0kfbwNoTdn2xZ_ItwjuqTrdrz2w238ks9am_wJICXclc3ZlDT-wLvw7vqhZO8vp_AnSQ1pGB8slyqDZmn",
"rarity": "Mil-Spec"
},
...
],
"metadata": {
"limit": 20,
"offset": 0,
"total": 16195
},
"status": "success"
}
Returns the list of steam items of provided project as an array of Steam_item objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/merchant/items/steam
Query Parameters
Parameter | Default | Description |
---|---|---|
project | csgo | the name of the game (see Naming Conventions) |
steam_market_hash_name | - | an array of steam hash names to filter the items |
search | - | search by item's steam hash name |
sort_column | - | [steam_market_hash_name,price] |
sort_dir | desc | [asc,desc] |
limit | - | items limit per request |
offset | - | items list offset |
Buy
Buy Item
Request example
{
"id": "297921",
"steamid": "XXXXXXXXXXXXXXXXX",
"trade_token": "XXXXXXXX",
"custom_id": "123"
}
Response example
{
"status": "success",
"data": {
"id": 2636,
"type": "buy",
"state": "active",
"price": 0.36,
"steam_trade_token": "zPvo-jv3",
"steam_trade_offer_state": "9",
"steam_tradeofferid": "4437550412",
"causer": null,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 22:16:26",
"custom_id": "123",
"items": [...]
}
}
Buy an item. Returns a newly created Operation object.
HTTP Request
POST https://api.shadowpay.com/api/v2/merchant/items/buy
POST Parameters
Parameter | Required | Description |
---|---|---|
id | ✓ | the id of the item you want to buy |
steamid | ✓ | Steam id of the user you want to buy the item for |
trade_token | ✓ | trade token of the user |
custom_id | your id for the transaction (optional) |
Buy For
Request example
{
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"price": 0.05,
"steamid": "XXXXXXXXXXXXXXXXX",
"trade_token": "XXXXXXXX",
"custom_id": "123"
}
Response example
{
"status": "success",
"data": {
"id": 2636,
"type": "buy",
"state": "active",
"price": 0.36,
"steam_trade_token": "zPvo-jv3",
"steam_trade_offer_state": "9",
"steam_tradeofferid": "4437550412",
"causer": null,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 22:16:26",
"custom_id": "123",
"items": [...]
}
}
Buy an item with steam_market_hash_name and price. Returns a newly created Operation object.
HTTP Request
POST https://api.shadowpay.com/api/v2/merchant/items/buy-for
POST Parameters
Parameter | Required | Description |
---|---|---|
steam_market_hash_name | ✓ | market hash name identifier |
price | ✓ | max price you are ready to pay for the item |
steamid | ✓ | Steam id of the user you want to buy the item for |
trade_token | ✓ | trade token of the user |
custom_id | your id for the transaction (optional) |
Purchase Orders
Get Purchase Orders
The response will be structured as follows
{
"data": [
{
"id": 302452,
"state": "active",
"price": 10,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 21:19:39",
"custom_id": null,
"steam_item": {
"id": 6585,
"project": "csgo",
"steam_market_hash_name": "R8 Revolver | Bone Mask (Battle-Scarred)",
"exterior": "Battle-Scarred",
"type": "Pistol",
"subcategory": "R8 Revolver",
"collection": "The Bank Collection",
"phase": null,
"suggested_price": 0.03,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopL-zJAt21uH3Yi19-N2mkb-DkvbiKoTdl3lW7Ysl3OzHoN323VGx-xJvYWymLIOTewE7ZV6D-gLsxrjn0Ze66cibmnUwpGB8ssJ0HHKV",
"rarity": "Mil-Spec"
}
}
],
"metadata": {
"limit": 20,
"offset": 0,
"total": 1
},
"status": "success"
}
Get your active purchase orders. Returns an array of Purchase Order objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/merchant/orders
Query Parameters
Parameter | Default | Description |
---|---|---|
custom_id | - | filter by custom id |
limit | - | items limit per request |
offset | - | items list offset |
Get a Single Purchase Order
The response will be structured as follows
{
"data": {
"id": 302452,
"state": "active",
"price": 10,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 21:19:39",
"custom_id": null,
"steam_item": {
"id": 6585,
"project": "csgo",
"steam_market_hash_name": "R8 Revolver | Bone Mask (Battle-Scarred)",
"exterior": "Battle-Scarred",
"type": "Pistol",
"subcategory": "R8 Revolver",
"collection": "The Bank Collection",
"phase": null,
"suggested_price": 0.03,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopL-zJAt21uH3Yi19-N2mkb-DkvbiKoTdl3lW7Ysl3OzHoN323VGx-xJvYWymLIOTewE7ZV6D-gLsxrjn0Ze66cibmnUwpGB8ssJ0HHKV",
"rarity": "Mil-Spec"
}
},
"status": "success"
}
Get a single purchase order with id. Returns a Purchase Order object.
HTTP Request
GET https://api.shadowpay.com/api/v2/merchant/orders/{id}
Url Parameters
Parameter | Required | Description |
---|---|---|
id | true | the id of the item |
Make Purchase Orders
Request example
{
"steamid": "XXXXXXXXXXXXXXXXX",
"trade_token": "XXXXXXXX",
"orders": [
{
"project": "csgo",
"steam_market_hash_name": "R8 Revolver | Bone Mask (Battle-Scarred)",
"phase": null,
"price_market": 0.03,
"quantity": 1
},
{
"project": "csgo",
"item_id": 746,
"price_market": 0.15,
"quantity": 2
}
]
}
Response example
{
"status": "success",
"data": [
{
"id": 302452,
"state": "active",
"price": 10,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 21:19:39",
"custom_id": null,
"steam_item": {...}
},
{...}
],
"metadata": {
"total": 2
}
}
Create purchase orders at Shadowpay and the system will automatically buy them for you as soon as they are available.
Returns an array of newly created Purchase Order objects
HTTP Request
POST https://api.shadowpay.com/api/v2/merchant/orders
POST Parameters
Parameter | Required | Description |
---|---|---|
steamid | ✓ | steamid of the user you want to buy the items for |
trade_token | ✓ | trade token of the user you want to buy the items for |
orders | ✓ | an array of orders |
orders.*.project | ✓ | the name of the game the item is from (see Naming Conventions) |
orders.*.item_id | ||
orders.*.steam_market_hash_name | only required if you don't know exact Shadowpay id of the item you want | |
orders.*.phase | ||
orders.*.quantity | default = 1 | |
orders.*.price_market | ✓ | max price you are ready to give for the item |
orders.*.currency | you can see the list of available currencies at shadowpay.com (default = USD) |
Cancel Purchase Orders
Response example
{
"cancelled_items": [...],
"not_cancelled_items": [...],
"errors": [
{
"id": "XXXXX",
"message": "ask_item_not_exist"
}
],
"metadata": {
"total_cancelled_items": 1,
"total_not_cancelled_items": 1
},
"status": "success"
}
Cancel purchase orders by ids.
Response structure:
cancelled_items
- an array of purchase orders that were successfully cancelled
not_cancelled_items
- an array of purchase orders that couldn't be cancelled
errors
id
- the id of the purchase order that couldn't be cancelled
message
- the error message
HTTP Request
DELETE https://api.shadowpay.com/api/v2/merchant/orders
Query Parameters
Parameter | Required | Description |
---|---|---|
item_ids | ✓ | an array of up to purchase order ids you want to cancel |
Update Purchase Orders
Request example
{
"offers": [
{
"id": "297921",
"price_market": 3.14
},
{
"id": "297922",
"price_market": 3.14,
"currency": "USD"
}
]
}
Response example
{
"updated_items": [...],
"not_updated_items": [...],
"errors": [
{
"id": "XXXXX",
"message": "ask_item_not_exist"
}
],
"metadata": {
"total_updated_items": 1,
"total_not_updated_items": 1
},
"status": "success"
}
Update one or several of your active purchase orders to change the max price or the currency.
Response structure:
updated_items
- an array of purchase orders that were successfully updated
not_updated_items
- an array of purchase orders that couldn't be updated
errors
id
- the id of the purchase order that couldn't be updated
message
- the error message
HTTP Request
PATCH https://api.shadowpay.com/api/v2/merchant/orders
POST Parameters
Parameter | Required | Description |
---|---|---|
orders | ✓ | an array of purchase orders |
orders.*.id | ✓ | the id of the purchase order you want to update |
orders.*.price_market | ✓ | the max price you want to change |
orders.*.currency | you can see the list of available currencies at shadowpay.com (default = USD) |
Operations
The response will be structured as follows
{
"data": [
{
"id": 2636,
"type": "buy",
"state": "active",
"price": 0.36,
"steam_trade_token": "zPvo-jv3",
"steam_trade_offer_state": "9",
"steam_tradeofferid": "4437550412",
"causer": null,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 22:16:26",
"custom_id": null,
"items": [...]
}
],
"metadata": {
"limit": 4000,
"offset": 0,
"total": 2
},
"status": "success"
}
Returns a list of your operations on Shadowpay as an array of Operation objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/merchant/operations
Query Parameters
Parameter | Default | Description |
---|---|---|
type | - | (buy,sell) |
states | - | an array of states the operations can be filtered with |
custom_ids | - | an array of custom ids the operations can be filtered with |
date_from | - | |
date_to | - | filter by the date of operation |
sort_column | time_created | [id,time_created,price] |
sort_dir | desc | [asc,desc] |
limit | 4000 | operations limit per request |
offset | 0 | operations list offset |
group_by | - | [custom_id] |
Grouping
Grouped response will be structured as follows
{
"data": {
"123": {
"id": 2636,
"type": "buy",
"state": "active",
"price": 0.36,
"steam_trade_token": "zPvo-jv3",
"steam_trade_offer_state": "9",
"steam_tradeofferid": "4437550412",
"causer": null,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 22:16:26",
"custom_id": "123",
"items": [...]
},
"324": {
"id": 2637,
"type": "buy",
"state": "active",
"price": 0.36,
"steam_trade_token": "zPvo-jv3",
"steam_trade_offer_state": "9",
"steam_tradeofferid": "4437550412",
"causer": null,
"steamid": "XXXXXXXXXXXXXXXXX",
"time_created": "2021-02-08 22:16:26",
"custom_id": "324",
"items": [...]
}
},
"status": "success"
}
Operations can be grouped by their custom ids using group_by
query parameter
group_by=custom_id
Shadowpay User API v2
Auth
Make sure to replace
sometesttoken
with your API token.
All endpoints require a API access token. Visit Shadowpay website to obtain it.
Token: sometesttoken
Account
Get inventory
The response will be structured as follows
{
"data": [
{
"id": 3507,
"project": "csgo",
"steam_market_hash_name": "Negev | Loudmouth (Field-Tested)",
"exterior": "Field-Tested",
"type": "Machinegun",
"subcategory": "Negev",
"collection": "The Falchion Collection",
"phase": null,
"suggested_price": 0.39,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpouL-iLhFf0Ob3fzhF6cqJlY6Fnv_9P7rFmXlu5cB1g_zMu4ms3FHg-RA6Yz30cYLDdQ9saFrW8wW8yOnm1pDpv8vNzHMyuXIq5inD30vg_iCKYUg",
"asset_id": 20516184590,
"tradable": true,
"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198064929874A20516184590D14145255354206648200",
"skip_reason": "is-used",
"min_price": 0.1,
"max_price": 11.7
},
...
],
"metadata": {
"total": 200
},
"status": "success"
}
Fetches and returns the inventory for the provided subseller from Steam as an array of Inventory Item objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/user/inventory
Parameter | Required | Default | Description |
---|---|---|---|
project | ✓ | - | the name of the game (see Naming Conventions) |
Items
Get Items
Request example
https://api.shadowpay.com/api/v2/user/items?token={{TOKEN}}&sort_column=discount&sort_dir=desc&steam_market_hash_name[]=AUG | Contractor (Minimal Wear)&steam_market_hash_name[]=Five-SeveN | Urban Hazard (Minimal Wear)&search=Contractor&types[]=Pistol&types[]=Knife&exteriors[]=Minimal Wear&exteriors[]=Field-Tested&date_from=2021-01-01 00:00:00&price_from=1&price_to=100
The response will be structured as follows
{
"data": [
{
"id": 294528,
"price": 0.03,
"floatvalue": 0,
"paintindex": null,
"paintseed": null,
"time_created": "2020-07-01 04:44:50",
"steam_item": {
"id": 5740,
"project": "csgo",
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Rifle",
"subcategory": "AUG",
"collection": "The Italy Collection",
"phase": null,
"suggested_price": 0.04,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot6-iFBRv7OPFcgJO5du-gM6OxfakZbnQw28H65Eg2L2RrYin3ADjrkJqYWz0Jo6UdVNrYV3SqAW9366x0l1OAhlP",
"rarity": "Mil-Spec"
},
"stickers": []
},
...
],
"metadata": {
"limit": 20,
"offset": 0,
"total": 100
},
"status": "success"
}
Returns the list of items currently on sale at Shadowpay as an array of Item objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/user/items
Query Parameters
Parameter | Default | Description |
---|---|---|
project | csgo | the name of the game (see Naming Conventions) |
steam_market_hash_name | - | an array of steam hash names to filter the items |
types | - | an array of types to filter the items |
exteriors | - | an array of exteriors to filter the items |
rarities | - | an array of rarities to filter the items |
search | - | search by item's steam hash name |
price_from | - | |
price_to | - | filter by a price range |
date_from | - | |
date_to | - | filter by the date of bid |
sort_column | time_created | [price_market,time_created,floatvalue] |
sort_dir | desc | [asc,desc] |
limit | - | items limit per request |
offset | - | items list offset |
group_by | - | [steam_market_hash_name] |
Grouping
Grouped response will be structured as follows
{
"data": {
"AUG | Contractor (Minimal Wear)": {
"id": 294528,
"price": 0.03,
"floatvalue": 0,
"paintindex": null,
"paintseed": null,
"time_created": "2020-07-01 04:44:50",
"steam_item": {
"id": 5740,
"project": "csgo",
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Rifle",
"subcategory": "AUG",
"collection": "The Italy Collection",
"phase": null,
"suggested_price": 0.04,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot6-iFBRv7OPFcgJO5du-gM6OxfakZbnQw28H65Eg2L2RrYin3ADjrkJqYWz0Jo6UdVNrYV3SqAW9366x0l1OAhlP"
},
"stickers": []
},
},
"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": 294528,
"price": 0.03,
"floatvalue": 0,
"paintindex": null,
"paintseed": null,
"time_created": "2020-07-01 04:44:50",
"steam_item": {
"id": 5740,
"project": "csgo",
"steam_market_hash_name": "AUG | Contractor (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Rifle",
"subcategory": "AUG",
"collection": "The Italy Collection",
"phase": null,
"suggested_price": 0.04,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot6-iFBRv7OPFcgJO5du-gM6OxfakZbnQw28H65Eg2L2RrYin3ADjrkJqYWz0Jo6UdVNrYV3SqAW9366x0l1OAhlP",
"rarity": "Mil-Spec"
},
"stickers": []
},
"is_seller_online": false
},
"status": "success"
}
Returns the item information for the provided item id and whether the seller is online at the moment. The item parameter in response is an Item object.
HTTP Request
GET https://api.shadowpay.com/api/v2/user/items/{id}
Url Parameters
Parameter | Required | Description |
---|---|---|
id | ✓ | the id of the item |
Get Item Prices
The response will be structured as follows
{
"data": [
{
"steam_market_hash_name": "Desert Eagle | Bronze Deco (Field-Tested)",
"price": "0.18",
"volume": "4"
},
{
"steam_market_hash_name": "Five-SeveN | Kami (Minimal Wear)",
"price": "0.95",
"volume": "1"
},
{
"steam_market_hash_name": "Five-SeveN | Nightshade (Field-Tested)",
"price": "1.67",
"volume": "1"
},
{
"steam_market_hash_name": "G3SG1 | Stinger (Field-Tested)",
"price": "0.29",
"volume": "9"
},
{
"steam_market_hash_name": "Galil AR | Kami (Minimal Wear)",
"price": "1.00",
"volume": "1"
}
],
"status": "success"
}
Returns the list of items currently on sale at Shadowpay, wth minimal price and volume(quantity) of items
HTTP Request
GET https://api.shadowpay.com/api/v2/user/items/prices
Query Parameters
Parameter | Default | Description |
---|---|---|
project | csgo | the name of the game (see Naming Conventions) |
Get Steam Items
The response will be structured as follows
{
"data": [
{
"id": 2,
"project": "csgo",
"steam_market_hash_name": "★ Bayonet | Marble Fade (Minimal Wear)",
"exterior": "Minimal Wear",
"type": "Knife",
"subcategory": "★ Bayonet",
"collection": null,
"phase": null,
"suggested_price": 557.7,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpotLu8JAllx8zJfAJP7c60mIW0kfbwNoTdn2xZ_ItwjuqTrdrz2w238ks9am_wJICXclc3ZlDT-wLvw7vqhZO8vp_AnSQ1pGB8slyqDZmn",
"rarity": "Mil-Spec"
},
...
],
"metadata": {
"limit": 20,
"offset": 0,
"total": 16195
},
"status": "success"
}
Returns the list of steam items of provided project as an array of Steam_item objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/user/items/steam
Query Parameters
Parameter | Default | Description |
---|---|---|
project | csgo | the name of the game (see Naming Conventions) |
steam_market_hash_name | - | an array of steam hash names to filter the items |
search | - | search by item's steam hash name |
sort_column | - | [steam_market_hash_name,price] |
sort_dir | desc | [asc,desc] |
limit | - | items limit per request |
offset | - | items list offset |
Offers
Get Offers
The response will be structured as follows
{
"data": [
{
"id": 17202959,
"price": 5,
"floatvalue": 0,
"paintindex": 0,
"paintseed": 0,
"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198064929874A21763929191D14584466534007297603",
"time_created": "2021-05-11 16:37:25",
"steam_item": {
"id": 18449,
"project": "csgo",
"steam_market_hash_name": "Sticker | Ancient Beast (Foil)",
"exterior": "",
"type": "Sticker",
"subcategory": "Sticker",
"collection": null,
"phase": null,
"suggested_price": 0.39,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXQ9QVcJY8gulRfXkPbQuqS0c7dVBJ1Kwdes7SxFAVl0uDcTjtN5dCJmIGZkPK6NuKIkDhSuZwg27-Z8IrzjAfl_kRlNzylcdLAJlc3M1CDqVTsyebu1oj84srYPsV2Gw",
"rarity": "Exotic"
},
"stickers": [],
"asset_id": "21763929191",
"state": "active",
"price_with_fee": 4.75,
"steamid": "XXXXXXXXXXXXXXXXX",
"custom_id": null
}
],
"metadata": {
"limit": 15000,
"offset": 0,
"total": 1
},
"status": "success"
}
Get your active offers. Returns an array of Offer objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/user/offers
Query Parameters
Parameter | Default | Description |
---|---|---|
sort_column | price | [id,price,time_created] |
sort_dir | desc | [asc,desc] |
limit | - | items limit per request |
offset | - | items list offset |
Get a Single Offer
The response will be structured as follows
{
"data": {
"id": 17202959,
"price": 5,
"floatvalue": 0,
"paintindex": 0,
"paintseed": 0,
"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198064929874A21763929191D14584466534007297603",
"time_created": "2021-05-11 16:37:25",
"steam_item": {
"id": 18449,
"project": "csgo",
"steam_market_hash_name": "Sticker | Ancient Beast (Foil)",
"exterior": "",
"type": "Sticker",
"subcategory": "Sticker",
"collection": null,
"phase": null,
"suggested_price": 0.39,
"is_stattrak": false,
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXQ9QVcJY8gulRfXkPbQuqS0c7dVBJ1Kwdes7SxFAVl0uDcTjtN5dCJmIGZkPK6NuKIkDhSuZwg27-Z8IrzjAfl_kRlNzylcdLAJlc3M1CDqVTsyebu1oj84srYPsV2Gw",
"rarity": "Exotic"
},
"stickers": [],
"asset_id": "21763929191",
"state": "active",
"price_with_fee": 4.75,
"steamid": "XXXXXXXXXXXXXXXXX",
"custom_id": null
},
"status": "success"
}
Get a single offer with id. Returns a Offer object.
HTTP Request
GET https://api.shadowpay.com/api/v2/user/offers/{id}
Url Parameters
Parameter | Required | Description |
---|---|---|
id | true | the id of the item |
Make offers
Request example
{
"offers": [
{
"id": "19643581752",
"price": 0.14,
"project": "csgo"
},
{
"id": "19643581752",
"price": 0.14,
"project": "csgo",
"currency": "USD"
}
]
}
Response example
{
"status": "success",
"data": [
{
"id": 302497,
"price": 40,
"floatvalue": null,
"paintindex": null,
"paintseed": null,
"time_created": "2021-02-09 12:49:53",
"steam_item": {...},
"stickers": [],
"asset_id": "20516184590",
"state": "active",
"price_with_fee": 38,
"steamid": "XXXXXXXXXXXXXXXXX",
"custom_id": null
}
],
"metadata": {
"total": 1
}
}
Create sell offers on Shadowpay for items from your inventory. Returns an array of newly created Offer objects
HTTP Request
POST https://api.shadowpay.com/api/v2/user/offers
POST Parameters
Parameter | Required | Description |
---|---|---|
offers | ✓ | an array of up to 250 offers |
offers.*.id | ✓ | the asset id of the item you want to sell |
offers.*.project | ✓ | the name of the game the item is from (see Naming Conventions) |
offers.*.price | ✓ | the price you want to put on the item |
offers.*.currency | you can see the list of available currencies at shadowpay.com (default = USD) |
Cancel offers
Response example
{
"cancelled_items": [...],
"not_cancelled_items": [...],
"errors": [
{
"id": "XXXXX",
"message": "bid_item_not_exist"
}
],
"metadata": {
"total_cancelled_items": 1,
"total_not_cancelled_items": 1
},
"status": "success"
}
Cancel offers by ids.
Response structure:
cancelled_items
- an array of offers that were successfully cancelled
not_cancelled_items
- an array of offers that couldn't be cancelled
errors
id
- the id of the offer that couldn't be cancelled
message
- the error message
HTTP Request
DELETE https://api.shadowpay.com/api/v2/user/offers
Query Parameters
Parameter | Required | Description |
---|---|---|
item_ids | ✓ | an array of up to 100 offer ids you want to cancel |
Cancel all offers
Response example
{
"cancelled_items": [...],
"not_cancelled_items": [...],
"errors": [
{
"id": "XXXXX",
"message": "bid_item_not_exist"
}
],
"metadata": {
"total_cancelled_items": 1,
"total_not_cancelled_items": 1
},
"status": "success"
}
Cancel all offers.
Response structure:
cancelled_items
- an array of offers that were successfully cancelled
not_cancelled_items
- an array of offers that couldn't be cancelled
errors
id
- the id of the offer that couldn't be cancelled
message
- the error message
HTTP Request
DELETE https://api.shadowpay.com/api/v2/user/offers/all
Update offers
Request example
{
"offers": [
{
"id": "297921",
"price": 3.14
},
{
"id": "297922",
"price": 3.14,
"currency": "USD"
}
]
}
Response example
{
"updated_items": [...],
"not_updated_items": [...],
"errors": [
{
"id": "XXXXX",
"message": "bid_item_not_exist"
}
],
"metadata": {
"total_updated_items": 1,
"total_not_updated_items": 1
},
"status": "success"
}
Update one or several of your active offers to change the price or the currency.
Response structure:
updated_items
- an array of offers that were successfully updated
not_updated_items
- an array of offers that couldn't be updated
errors
id
- the id of the offer that couldn't be updated
message
- the error message
HTTP Request
PATCH https://api.shadowpay.com/api/v2/user/offers
POST Parameters
Parameter | Required | Description |
---|---|---|
offers | ✓ | an array of up to 250 offers |
offers.*.id | ✓ | the id of the offer you want to update |
offers.*.price | ✓ | the price you want to change |
offers.*.currency | you can see the list of available currencies at shadowpay.com (default = USD) |
Offer All Inventory
Request example
{
"price_base": "shadowpay",
"factor_steam": 200,
"factor_local": 300
}
Response example
{
"status": "success",
"data": [
{
"id": 302497,
"price": 40,
"floatvalue": null,
"paintindex": null,
"paintseed": null,
"time_created": "2021-02-09 12:49:53",
"steam_item": {...},
"stickers": [],
"asset_id": "20516184590",
"state": "active",
"price_with_fee": 38,
"steamid": "XXXXXXXXXXXXXXXXX",
"custom_id": null
}
],
"metadata": {
"total": 1
}
}
Sell all your Steam inventory on Shadowpay. Returns an array of newly created Offer objects.
HTTP Request
POST https://api.shadowpay.com/api/v2/user/offers/all
POST Parameters
Parameter | Required | Description |
---|---|---|
price_base | ✓ | enum(shadowpay,steam) |
factor_steam | ✓ | items will be sold at price steam_price * factor_steam |
factor_local | if price_base == shadowpay | items will be sold at price (lowest price for similar items at Shadowpay) * factor_local |
project | csgo/dota2/rust |
Operations
The response will be structured as follows
{
"data": [
{
"id": 2636,
"type": "buy",
"state": "active",
"price": 0.36,
"time_created": "2021-02-08 22:16:26",
"items": [...]
}
],
"metadata": {
"limit": 4000,
"offset": 0,
"total": 2
},
"status": "success"
}
Returns a list of your operations on Shadowpay as an array of Operation objects.
HTTP Request
GET https://api.shadowpay.com/api/v2/user/operations
Query Parameters
Parameter | Default | Description |
---|---|---|
type | - | (buy,sell) |
states | - | an array of states the operations can be filtered with |
date_from | - | |
date_to | - | filter by the date of operation |
sort_column | time_created | [id,time_created,price] |
sort_dir | desc | [asc,desc] |
limit | 4000 | operations limit per request |
offset | 0 | operations list offset |
Pay by Steam Skins
Shadowpay offers functionality to refill balance on your website using Steam Skins.
Transaction flow
- User clicks the link (button) "Pay By Steam Skin";
- Website generates a request to Shadowpay and returns payment link;
- Website redirects user to Shadowpay payment link;
- User installs the extension or application for automatic, fast, secure trading;
- 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
via Trade form iFrame
<script src="https://cdn.shadowpay.com/shadowpay/iframe/shadowpay.js"></script>
btn.addEventListener('click', () => {
ShadowPay.init('xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx', '77777777777777777', '{account}', '{order_id}');
})
ShadowPay.on('close', () => {
console.log('modal closed');
});
- Add a button to your order page. When your customer clicks this button, they will be shown the Shadowpay trade form.
- Embed ShadowPay trade form script in your html file.
- Call ShadowPay.init function with your PUBLIC_HASH and user steamid when the user presses the button.
- (Optional) You can catch the modal close event by using ShadowPay.on function
via API
<?php
$params['signature'] = hash('sha256', $params['order_id'] . $params['amount'] . $params['currency'] . SECRET_HASH);
- You should generate Public hash and Secret hash on Shadowpay merchant panel.
- Set the callback url to where the IPN (Instant Payment Notifications) will be sent.
Create payment link
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
The above command returns JSON structured as follows:
{
"token": "a1d579731b5fd7b7cb8f64c641f73111",
"url": "https:\/\/shadowpay.com\/en\/pay?token=a1d579731b5fd7b7cb8f64c641f73111",
"status": "success"
}
POST Parameters
Parameter | Required | Description |
---|---|---|
account | true | Users account "id" in your database. Can be steamid. |
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 |
amount | true | Amount in USD. It could be instant numeric, it does not affect anything, but it required for compatibility. |
steam_trade_token | false | User's trade token |
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
¤cy=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.
<?php
$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
Response
Your server should send a json
response to the IPN request to complete the transaction.
Expected structure below:
{"status": "ok"}
Parameter | Description |
---|---|
status | "ok" for a successfully processed transaction."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 |