Kindly proceed to our homepage to apply for your API Key. Once your application is approved, you have the ability to manage your orders, balance and settings by navigating to open.haloskins.com.

Item Query

Search items by Name&Price

Input marketHashName and price to search for the number of items for sale below that price.

HTTP request
POST /merchant/product/price/query?app-key=955a2f4e8f121cdda99ae97ae9728d2d HTTP/1.1
Content-Type: application/json
Content-Length: 78
Host: localhost:8080

{
  "marketHashName" : "Negev | Drop Me (Factory New)",
  "maxPrice" : 10
}
Table 1. Request fields
Path Type Description

marketHashName

String

Steam market item hash name. One must be filled in with itemId

maxPrice

Number

Check the items in the market below the highest price.(not required)

deliver

Number

deliver type of this asset.1 : p2p , 2: bot. (not required)

Request body: use param itemId
{
  "marketHashName" : "Negev | Drop Me (Factory New)",
  "maxPrice" : 10
}
Table 2. Request fields: use param itemId
Path Type Description

marketHashName

String

Steam market item hash name. One must be filled in with itemId

maxPrice

Number

Check the items in the market below the highest price.(not required)

deliver

Number

deliver type of this asset.1 : p2p , 2: bot. (not required)

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 257

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : {
    "itemId" : 1017714571515645952,
    "marketHashName" : "Negev | Drop Me (Factory New)",
    "price" : null,
    "count" : 0
  },
  "x" : null
}
Table 3. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Object

Actual data.

data.marketHashName

String

Steam market item hash name. U.S.dollar.

data.itemId

Number

Steam market item id.

data.price

Null

Lowest available price.

data.count

Number

Eligible quantity for sale.

Fetch listed items by name

Fetch the entire HaloSkins for sale list by entering the marketHashNames, and you can monitor price and on-sale status updates through WebSocket. You can display and sell HaloSkins items on your own trading website through it.

HTTP request
POST /merchant/sell/list?app-key=955a2f4e8f121cdda99ae97ae9728d2d HTTP/1.1
Content-Type: application/json
Content-Length: 133
Host: localhost:8080

{
  "appId" : 730,
  "marketHashNames" : ["Souvenir M249 | Contrast Spray (Field-Tested)"],
  "pageIndex" : 1,
  "pageSize" : 100
}
Table 4. Request fields
Path Type Description

marketHashNames

Array

Steam market item hash name.

appId

Number

AppId of game.

phase

String

phase. (not required)

deliver

Number

deliver type of this asset.1 : p2p , 2: bot. (not required)

minFloat

Number

min float (not required)

maxFloat

Number

max float (not required)

pageSize

Number

Size of every page.

pageIndex

Number

Index of page

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1280

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : {
    "total" : 1,
    "pages" : 1,
    "page" : 1,
    "limit" : 100,
    "list" : [ {
      "productSellId" : 1233947221628608512,
      "price" : 10.98,
      "floatValue" : 0.350459486246109,
      "paintIndex" : 22,
      "paintSeed" : 110,
      "gradient" : 0.0,
      "deliver" : 1,
      "nameTag" : "",
	  "keychains": [
		{
			"pattern": 48100,
			"id": 6
		}
	  ],
      "stickers" : [ {
        "stickerId" : 1694,
        "name" : "Overpass (Gold)",
        "slot" : 0,
        "wear" : 0.0,
        "image" : "https://img.zbt.com/e/steam/csgo/sticker/1694.png"
      }, {
        "stickerId" : 5972,
        "name" : "Heroic (Gold) | Rio 2022",
        "slot" : 1,
        "wear" : 0.0,
        "image" : "https://img.zbt.com/e/steam/csgo/sticker/5972.png"
      }, {
        "stickerId" : 6060,
        "name" : "IEM (Gold) | Rio 2022",
        "slot" : 2,
        "wear" : 0.0,
        "image" : "https://img.zbt.com/e/steam/csgo/sticker/6060.png"
      }, {
        "stickerId" : 6056,
        "name" : "Outsiders (Gold) | Rio 2022",
        "slot" : 3,
        "wear" : 0.0,
        "image" : "https://img.zbt.com/e/steam/csgo/sticker/6056.png"
      } ]
    } ]
  },
  "x" : null
}
Table 5. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Object

Actual data.

data.total

Number

Total num of all

data.pages

Number

Pages

data.page

Number

Index of page

data.limit

Number

Size of every page

data.list[].productSellId

Number

the id to buy

data.list[].price

Number

price of asset

data.list[].floatValue

Number

float of asset

data.list[].paintIndex

Number

paint index

data.list[].paintSeed

Number

paint seed

data.list[].gradient

Number

gradient

data.list[].deliver

Number

deliver type of this asset.1 : p2p , 2: bot

data.list[].nameTag

String

name tag

data.list[].stickers[].stickerId

Number

the id of sticker in steam

data.list[].stickers[].name

String

name of sticker

data.list[].stickers[].slot

Number

slot of sticker

data.list[].stickers[].wear

Number

wear of sticker

data.list[].stickers[].image

String

image of sticker

data.list[].keychains[].wear

Number

id of keychain

data.list[].keychains[].partten

Number

pattern of keychain

Batch query of item prices and status

You can batch query the prices and listing status of items to assist you in situations such as information discrepancies that may arise during the process of stock sharing.

HTTP request
POST /merchant/sell/batch-query?app-key=955a2f4e8f121cdda99ae97ae9728d2d HTTP/1.1
Content-Type: application/json
Content-Length: 50
Host: localhost:8080

{
  "productSellIds" : [ 1217217784781119491 ]
}
Table 6. Request fields
Path Type Description

productSellIds[]

Array

List of productSellId you want to query

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 219

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : [ {
    "productSellId" : 1217217784781119491,
    "status" : "active",
    "price" : 0.02
  } ],
  "x" : null
}
Table 7. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Array

Actual data.

data[].productSellId

Number

data[].status

String

the sale status of asset.value: 'active' or 'inactive'

data[].price

Number

price of asset

Fetch all items in market

HTTP request
GET /merchant/product/v2/all?app-key=955a2f4e8f121cdda99ae97ae9728d2d&appId=730 HTTP/1.1
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 272

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : [ {
    "name" : "Sticker | degster | Antwerp 2022",
    "p2pPrice" : 0.01,
    "p2pQuantity" : 10,
    "botPrice" : 0,
    "botQuantity" : 0
  } ],
  "x" : null
}
Table 8. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Array

Actual data.

data[].name

String

Name of item.

data[].p2pPrice

Number

Lowest Price of p2p item

data[].p2pQuantity

Number

Quantity of p2p item .

data[].botPrice

Number

Lowest Price of bot item

data[].botQuantity

Number

Quantity of bot item .

Phases

phase-1

phase-2

phase-3

phase-4

ruby

emerald

sapphire

black-pearl

1st-max

2nd-max

3rd-max

4th-max

5th-max

6th-max

7th-max

8th-max

9th-max

10th-max

FFI

max-fake

sun

tire-1

tire-2

tire-3

tire-4

Buy items

Buy items by Name&Price

To buy steam item on our market. By passing in the marketHashName or itemId, to choose what you want to buy. The mxPrice: you can decide the highest price you’re willing to pay.

We’ll choose the lowest price on the market, if there are no eligible items, they will not be purchased.

*If the code of response is "1001", please use the Order Detail API to verify the order status 1 minute after the request.

HTTP request
POST /merchant/buy/normal/buy?app-key=955a2f4e8f121cdda99ae97ae9728d2d HTTP/1.1
Content-Type: application/json
Content-Length: 262
Host: localhost:8080

{
  "marketHashName" : "★ Ursus Knife | Doppler (Factory New)",
  "maxPrice" : 3,
  "outTradeNo" : "HaloSkin423456789",
  "receiveSteamId" : 76561199467611048,
  "steamTradeUrl" : "https://steamcommunity.com/tradeoffer/new/?partner=1507345320&token=_giajW08",
  "phase":"phase-1"
}
Table 9. Request fields
Path Type Description

marketHashName

String

Steam market item hash name. One must be filled in with itemId.

maxPrice

Number

Maximum purchase Price (US $).

receiveSteamId

Number

The recipient’s steamId.

steamTradeUrl

String

The recipient’s steam trade link.

outTradeNo

String

Your order number.

phase

String

Phase. not required

deliver

Integer

Deliver type of this asset.1 : p2p , 2: bot. not required.

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 162

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : {
    "orderId" : 123,
    "pay" : 1
  },
  "x" : null
}
Table 10. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Object

Actual data.

data.orderId

Number

Order id.

data.pay

Number

The amount actually paid for this order.

Common Error

code Description

1001

*Uncertain purchase result, please check order details after 1 minute

61017

Balance is not enough

61112

Steam status has problem,for example:privacy inventory

61114

Buyer’s SteamID is temporarily banned for declining or blocking seller

499103

No items available for sale that meet the criteria

499107

outTradeNo is repeated

2010324

This Trade URL is invalid

Buy items by id

To buy steam item on our market. By passing in the productSellId, to choose what you want to buy.

*If the code of response is "1001", please use the Order Detail API to verify the order status 1 minute after the request.

HTTP request
POST /merchant/buy/assign?app-key=955a2f4e8f121cdda99ae97ae9728d2d HTTP/1.1
Content-Type: application/json
Content-Length: 226
Host: localhost:8080

{
  "outTradeNo" : "HaloSkin423456789",
  "price" : 1,
  "productSellId" : 123,
  "receiveSteamId" : 76561199467611048,
  "steamTradeUrl" : "https://steamcommunity.com/tradeoffer/new/?partner=1507345320&token=_giajW08"
}
Table 11. Request fields
Path Type Description

productSellId

Number

id.

price

Number

Price of asset (US $).

receiveSteamId

Number

The recipient’s steamId.

steamTradeUrl

String

The recipient’s steam trade link.

outTradeNo

String

Your order number.

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 165

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : {
    "orderId" : 123456,
    "pay" : 1
  },
  "x" : null
}
Table 12. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Object

Actual data.

data.orderId

Number

Order id.

data.pay

Number

The amount actually paid for this order.

Common Error

code Description

1001

*Uncertain purchase result, please check order details after 1 minute

61017

Balance is not enough

61112

Steam status has problem,for example:privacy inventory

61114

Buyer’s SteamID is temporarily banned for declining or blocking seller

499107

outTradeNo is repeated

499111

The price of the listed item has changed

499110

The listed item is removed

2010324

This Trade URL is invalid

Check balance

HTTP request
GET /merchant/info/balance?app-key=955a2f4e8f121cdda99ae97ae9728d2d HTTP/1.1
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 127

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : 11798.94,
  "x" : null
}
Table 13. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Number

balance

Ban information

If Buyer Declined or Blocked Seller, we will ban the steamId several hours.

You can use this api to query his ban information.

If a user blocks our seller or declines the offer once, we will ban him for 1 hour.

If a user blocks our seller or declines the offer twice, we will ban him for 3 hours.

If a user blocks our seller or declines the offer three times or more, we will ban him for 12 hours.

HTTP request
GET /merchant/buy/steam/ban?app-key=769807e1195a4fa4bc72f098eb936fc7&steamId=76561198422888028 HTTP/1.1
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 329

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : {
    "items" : [ {
      "name" : "FAMAS | Colony (Field-Tested)",
      "unbanTime" : 1715000792
    }, {
      "name" : "MP5-SD | Dirt Drop (Minimal Wear)",
      "unbanTime" : 1714968606
    } ]
  },
  "x" : null
}
Table 14. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Object

Actual data.

data.items[].name

String

Name of item.

data.items[].unbanTime

Number

The timestamp to unban.

Order

Order Detail API

Query order detail, By passing in the orderId or outTradeNo, to get the order detail.

HTTP request
GET /merchant/order/buy/detail?app-key=955a2f4e8f121cdda99ae97ae9728d2d&outTradeNo=1179273226945818624 HTTP/1.1
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 968

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : {
    "orderId" : 1179273226945818624,
    "outTradeNo" : "HaloSkin423456799",
    "actualPay" : 0.02,
    "failedDes" : null,
    "buyerInfo" : {
      "steamId" : "76561199467611048",
      "steamCreateTime" : 1672902371,
      "nickName" : "tao_lexi",
      "avatar" : "https://avatars.steamstatic.com/e3162e5e370c2e364dc41e0396a500216cfac8f8_full.jpg"
    },
    "orderAssetInfo" : {
      "orderAssetStatus" : 11,
      "marketHashName" : "Sticker | KSCERATO | Paris 2023",
      "imageUrl" : "https://img.zbt.com/e/steam/item/730/U3RpY2tlciB8IEtTQ0VSQVRPIHwgUGFyaXMgMjAyMw==.png",
      "isJumpOffer" : 0,
      "itemId" : "1128403848121696257",
      "orderSourceId" : "1179238787599560704",
      "cancelReason" : "You failed to confirm within 12hours"
    },
    "orderCreateTime" : null,
    "tradeOfferId" : null
  },
  "x" : null
}
Table 15. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Object

Actual data.

data.orderId

Number

The order id.

data.outTradeNo

String

Third party merchant order number.

data.failedDes

Null

If the order fails, the reason will be shown here.

data.orderCreateTime

Null

Order creation time.

data.actualPay

Number

The actual payment price of the order

data.tradeOfferId

Null

steam offer id, concatenated to the address where steam accepts the offer.https://steamcommunity.com/tradeoffer/{trdadeOfferId}

data.buyerInfo

Object

Buyer steam Information.

data.buyerInfo.steamId

String

Steam id.

data.buyerInfo.steamCreateTime

Number

Time to join Steam.

data.buyerInfo.nickName

String

User Steam nick name.

data.buyerInfo.avatar

String

User Steam avatar

data.orderAssetInfo

Object

Order details.

data.orderAssetInfo.orderAssetStatus

Number

Order status code,status 1= Pending Delivery by Seller, 2= processing, 3= Pending Receipt by Buyer,10= buyer received, 11= cancelled,200=successed finally,220=reversed

data.orderAssetInfo.marketHashName

String

Item market hash name.

data.orderAssetInfo.imageUrl

String

Item image url.

data.orderAssetInfo.itemId

String

Steam market item id.

data.orderAssetInfo.orderSourceId

String

The order source id.

data.orderAssetInfo.cancelReason

String

Order cancel reason.

data.orderAssetInfo.isJumpOffer

Number

Can jump to Steam trade offer.

Order History

Not return failed orders.

HTTP request
GET /merchant/order/buy/history?app-key=6b4b29edf1be1564c8c14b61cd573752&fromDate=1708272000&toDate=1708358400&pageIndex=1&pageSize=1000 HTTP/1.1
Host: localhost:8080
Table 16. Request fields
Parameter Description

app-key

fromDate

date filter from

toDate

date filter to

pageIndex

Index of page

pageSize

Size of page,max:1000

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 279

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : [ {
    "orderId" : 1233591536932544513,
    "outTradeNo" : "1759467449516158977",
	"marketHashName": "FAMAS | Colony (Field-Tested)",
    "pay" : 1.0,
    "createTime" : 1708324703,
    "status" : 10
  } ],
  "x" : null
}
Table 17. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Array

Actual data.

data[].orderId

Number

The order id of haloskins

data[].outTradeNo

String

your order number

data[].marketHashName

String

Steam market item hash name

data[].pay

Number

The actual payment price of the order

data[].createTime

Number

Order creation time

data[].status

Number

status: 2= processing,10= buyer received, 11= cancelled,200=successed finally,220=reversed

Other

Deposit History

HTTP request
GET /merchant/info/deposit/history?app-key=e8b74a0e9e654de3ba1aaf8128bccb02&fromDate=1709740800&toDate=1709827200&pageIndex=1&pageSize=1000 HTTP/1.1
Host: localhost:8080
Table 18. Request fields
Parameter Description

app-key

fromDate

date filter from

toDate

date filter to

pageIndex

Index of page

pageSize

Size of page,max:1000

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 223

{
  "success" : true,
  "message" : null,
  "messageParams" : null,
  "code" : null,
  "data" : [ {
    "channelCode" : "digital_currency",
    "amount" : 4.99,
    "createTime" : 1709794245,
    "depositId":"1000023"
  } ],
  "x" : null
}
Table 19. Response fields
Path Type Description

success

Boolean

Whether the correct data results are obtained.

message

Null

Error Message.

messageParams

Null

Error Message.

code

Null

Error code.

x

Null

Additional data can be ignored.

data

Array

Actual data.

data[].channelCode

String

channel: bank_transfer,digital_currency

data[].amount

Number

Deposit amount

data[].createTime

Number

creation time

data[].depositId

String

id

Notification

Order callback notification

When the order status changes, we will notify you by way of callback .

You need to provide us with a callback address,this should be a post Api.

We will send a json data to you via post request.A callback demo is shown here

You can set a callback address on our website.

Curl request
$ curl 'http://localhost:8080/test/v1/callback/demo?app-key=955a2f4e8f121cdda99ae97ae9728d2d' -i -X POST \
    -H 'Content-Type: application/json'
HTTP request
POST /test/v1/callback/demo?app-key=955a2f4e8f121cdda99ae97ae9728d2d HTTP/1.1
Content-Type: application/json
Host: localhost:8080
Request body
HTTP response
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 69

{
  "orderInfoVO" : {
    "orderId" : 123456
  },
  "type" : 1
}
Table 20. Response fields
Path Type Description

type

Number

Return order data when type 1.

orderInfoVO

Object

Can reference Order Detail API.

orderInfoVO.orderId

Number

The order id.

Monitor price and status of all items

  1. WebSocket Connection Connect to: wss://api.haloskins.com/ws/

  2. Sending Message Send the following message to initiate listening:

   {"code":0,"data":{"token":"YOUR API KEY"},"message":"","msgNo":"HALO_MERCHANT_ENTER_TOPIC_REQ","success":true}

If you receive the response,it indicates that the listening setup was successful.

   {"code":0,"message":"","msgNo":"HALO_MERCHANT_ENTER_TOPIC_RSP","success":true}

3.Send a ping command once per 30 seconds to keep the connection alive

   PING

When a new asset is added, you will receive a message with "msgNo":"PRODUCT_SELL_ADD" containing information like this:

   {"code":0,"data":{"paintSeed":621,"price":1.0000,"paintIndex":96,"productSellId":1233989668031420160,"gradient":0,"appId":730,"floatValue":0.3601983785629272,"deliver":1,"stickers":[{"image":"https://img.zbt.com/e/steam/csgo/sticker/2778.png","name":"NiKo (Foil) | Boston 2018","wear":0.0,"slot":3,"stickerId":2778}],"marketHashName":"SSG 08 | Blue Spruce (Field-Tested)"},"message":"","msgNo":"PRODUCT_SELL_ADD","success":true}

When an asset is updated, you will receive a message with "msgNo":"PRODUCT_SELL_UPDATE" containing information like this:

   {"code":0,"data":{"price":2.0000,"productSellId":1233989668035420160,"status":"active"},"message":"","msgNo":"PRODUCT_SELL_UPDATE","success":true}