API Documentation

Base URL /api/v1. Authenticate with the x-api-key header (or ?key=). Every response is JSON: { "data": ... } on success, { "error": ... } on failure. Rate-limit headers are returned on every call.

cURL
curl "https://skinapi.skinvaults.online/api/v1/markets?name=AK-47%20|%20Redline%20(Field-Tested)&game=cs2" \
  -H "x-api-key: sk_live_xxx"
JavaScript
const r = await fetch(
  "https://skinapi.skinvaults.online/api/v1/markets?" +
  new URLSearchParams({ name, game: "cs2" }),
  { headers: { "x-api-key": KEY } }
);
const { data } = await r.json();
Python
import requests
r = requests.get(
  "https://skinapi.skinvaults.online/api/v1/markets",
  params={"name": name, "game": "cs2"},
  headers={"x-api-key": KEY})
data = r.json()["data"]
Run in Postman

All 35 endpoints organised into folders with pre-filled example values - just set your API key and hit Send.

No Postman app? Download the .jsonthen use Postman > Import.

Open in Postman

OpenAPI: /api/v1/openapi.json · Status: /status

GET/api/v1/marketsPrices

Unified price for an item across all 11 tracked marketplaces. All money values are integer MINOR units (cents): 2813 means 28.13. Every response carries a `unit` field so you never have to guess.

ParamRequiredExampleDescription
nameyesAK-47 | Redline (Field-Tested)market_hash_name of the item
gamenocs2cs2 (default), dota2, rust, ...
currencynoUSDISO 4217 code (USD default, e.g. EUR, GBP)
POST/api/v1/markets/batchPrices

Price up to 20 items across all markets in one call.

{
  "names": [
    "AK-47 | Redline (Field-Tested)",
    "AWP | Asiimov (Field-Tested)",
    "Glock-18 | Water Elemental (Factory New)"
  ],
  "game": "cs2",
  "currency": "USD"
}
GET/api/v1/itemsPrices

Current price for an item (cached Steam Market, live fallback). NOTE: `price` is a MAJOR-unit decimal (42.16) - the only endpoint that is; every other price endpoint returns integer cents. Each response carries a `unit` field.

ParamRequiredExampleDescription
nameyesAK-47 | Redline (Field-Tested)market_hash_name
gamenocs2game key
currencynoUSDISO 4217 code (USD default, e.g. EUR, GBP)
GET/api/v1/historyPrices

Daily price history (cross-source average + volume). Returns up to 365 days.

ParamRequiredExampleDescription
nameyesAK-47 | Redline (Field-Tested)market_hash_name
gamenocs2cs2 (default), dota2, rust, ...
daysno301-365 (default 30)
currencynoEURISO 4217 code for price conversion (default USD, e.g. EUR, GBP)
GET/api/v1/dealsPrices

Deal finder: items priced below Steam across markets.

ParamRequiredExampleDescription
gamenocs2game key (default cs2)
min_discountno0.150-0.95 (default 0.15)
currencynoUSDISO 4217 (default USD)
GET/api/v1/feedPrices

Bulk market feed: floor, cross-market spread, top buy order, supply and 7d change for the whole catalogue in one call. Page size scales with your plan (free 100 > enterprise 10,000).

ParamRequiredExampleDescription
gamenocs2game key (default cs2)
limitno100items per page, capped by plan
offsetno0pagination offset (default 0)
min_sourcesno3only items priced by at least N marketplaces
sortnogapname (default), floor, gap or supply
currencynoUSDISO 4217 code (default USD)
GET/api/v1/moversPrices

Biggest gainers and losers over a window, from daily price history. Penny items and newly-tracked items are filtered out so the list is real movement, not noise.

ParamRequiredExampleDescription
gamenocs2game key (default cs2)
daysno71-90 (default 7)
directionnoupboth (default), up or down
min_priceno5ignore items starting below this price (default 1.00)
limitno251-250 per list (default 25)
currencynoUSDISO 4217 code (default USD)
GET/api/v1/indexPrices

Aggregate market index (rebased to 1000 at first snapshot) with history and a per-marketplace breakdown. itemCount is returned per point so coverage changes can be told apart from real moves.

ParamRequiredExampleDescription
gamenocs2game key (default cs2)
daysno301-365 (default 30)
currencynoUSDISO 4217 code (default USD)
GET/api/v1/arbitragePrices

Fee-aware arbitrage: buy the cheapest listing, sell where the net return after commission is highest. Returns buyFrom/sellTo, netProfit, roi and a confidence flag. Unlike /deals, the numbers are after fees.

ParamRequiredExampleDescription
gamenocs2game key (default cs2)
min_profitno1minimum net profit in currency units (default 0.50)
min_roino0.1minimum return on cost, 0-1 (default 0.05 = 5%)
limitno501-200 (default 50)
currencynoUSDISO 4217 code (default USD)
GET/api/v1/floatFloat

Exact float, paint seed, pattern (Doppler phase, blue-gem tier, Fire&Ice), stickers with images and sticker value (USD), and item name+image.

ParamRequiredExampleDescription
urlyessteam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198006518558A35678741806D7170682694397862CS2 inspect link (steam:// or https://)
GET/api/v1/float/priceFloat

Price a specific item instance: the float picks the wear bucket, the paint seed surfaces pattern premiums (Doppler phase, blue gem, Fire & Ice). Returns the full wear price curve, and real per-phase Doppler prices where available.

ParamRequiredExampleDescription
nameyesAK-47 | Redline (Field-Tested)market_hash_name (wear suffix optional if you pass float)
floatno0.220-1 float value; decides the wear bucket
paint_seedno6610-1000 paint seed; drives pattern detection
paint_indexno572paint index from /float; required to resolve a Doppler's phase (the name doesn't encode it)
gamenocs2game key (default cs2)
currencynoUSDISO 4217 code (default USD)
GET/api/v1/orderbookFloat

Live Steam order-book depth for a CS2 item: bid/ask ladder, spread, total buy/sell interest, plus the Buff buy-order as a cross-venue instant-sell reference. No other public CS2 API exposes this.

ParamRequiredExampleDescription
nameyesAK-47 | Redline (Field-Tested)market_hash_name (CS2 only)
depthno20levels per side, 1-100 (default 20)
currencynoUSDISO 4217 code (default USD)
GET/api/v1/float/leaderboardFloat

Lowest (or highest) float leaderboard for a skin.

ParamRequiredExampleDescription
nameyesAK-47 | Redline (Field-Tested)skin name
ordernolowestlowest (default) | highest
limitno251-100 (default 25)
GET/api/v1/inventoryInventory

Public inventory priced per item with total value, plus a summary (rarity breakdown, tradable/marketable counts, top items). Supports any game.

ParamRequiredExampleDescription
steam_idyes76561197960435530SteamID64 or vanity name
gamenocs2game key (default cs2)
pricesnotruefalse to skip valuation (default true)
currencynoUSDISO 4217 code for prices/total (default USD)
POST/api/v1/inventory/batchInventory

Up to 10 inventories in a single request.

{
  "steam_ids": [
    "76561197960435530",
    "76561198006518558"
  ],
  "game": "cs2"
}
GET/api/v1/inventory/historyInventory

Daily value-over-time history for a tracked inventory.

ParamRequiredExampleDescription
steam_idyes76561197960435530SteamID64 or vanity name
gamenocs2game key (default cs2)
daysno901-365 (default 90)
currencynoUSDISO 4217 (default USD)
GET/api/v1/profileProfile

Steam profile with level, CS2 playtime (hours), VAC/trade/community ban status, avatar and country.

ParamRequiredExampleDescription
idyes76561197960435530SteamID64 or vanity name
GET/api/v1/friendlistProfile

Friend list with friendship timestamps.

ParamRequiredExampleDescription
steam_idyes76561197960435530SteamID64 or vanity name
GET/api/v1/catalogItems DB

Full paginated item catalog (up to 500/page). CS2 returns all ~15K wear-specific items from the asset DB with image, type and rarity. Other games return names seen in the prices collection. Add ?prices=true to include the lowest known price per item.

ParamRequiredExampleDescription
gamenocs2cs2 (default), dota2, rust, tf2, ...
limitno0items per page, default 100. Pass 0 for the full dataset (no cap)
offsetno0pagination offset (default 0)
qnoAK-47search / filter by name (partial match)
typenoRifleCS2 weapon type filter (Rifle, Pistol, Knife, …)
raritynoClassifiedCS2 rarity filter (Covert, Classified, Restricted, …)
pricesnotruetrue to include lowest known price per item
sortnopricename (default) or price (requires prices=true)
currencynoUSDISO 4217 code for prices (default USD)
GET/api/v1/items/metaItems DB

Full metadata for an item (weapon, rarity, collection, crates, float range).

ParamRequiredExampleDescription
nameyesAK-47 | Redline (Field-Tested)market_hash_name
GET/api/v1/collectionsItems DB

CS2 cases, capsules and collections: every set with its full item pool, the rare knife/glove pool, release date and live container price.

ParamRequiredExampleDescription
namenoHuntsman Weapon Caseone set by exact name or dataset id (returns full contents)
qnoHuntsmanfilter the list by name (partial match)
kindnocratecrate | collection
typenoCasecrate type (Case, Sticker Capsule, Souvenir Case, …)
contentsnotruetrue to inline the item pool on list results
pricesnotruetrue to include the container's lowest live price
limitno1001-500 (default 100)
offsetno0pagination offset (default 0)
currencynoUSDISO 4217 code for prices (default USD)
GET/api/v1/currencyUtility

Live USD-based FX rates - the same table every price endpoint uses for ?currency=. Pass from/to/amount to convert a single value.

ParamRequiredExampleDescription
fromnoUSDISO 4217 source currency (with `to`, returns one conversion)
tonoEURISO 4217 target currency
amountno42.29amount to convert (default 1)
GET/api/v1/resolveProfile

Resolve a SteamID64, vanity name or pasted profile URL to every ID format (SteamID64, STEAM_1:Y:Z, [U:1:id], account id).

ParamRequiredExampleDescription
idyesgabelogannewellSteamID64, vanity name or full profile URL
POST/api/v1/tradeupUtility

Trade-up calculator: 10 items of the same rarity + collection -> possible outcomes, probabilities, EV.

{
  "items": [
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.2
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.22
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.24
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.26
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.28
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.3
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.32
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.34
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.36
    },
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "float": 0.38
    }
  ]
}
GET/api/v1/alertsAlerts

List every price alert on your account. Each fires when an item's lowest price crosses your threshold, via webhook, Discord and/or email.

POST/api/v1/alertsAlerts

Create a price alert. threshold is in your currency (e.g. 40 with currency=EUR) and fires when the item's lowest price goes below (or above) it. Provide at least one channel.

{
  "name": "AK-47 | Redline (Field-Tested)",
  "game": "cs2",
  "threshold": 40,
  "currency": "USD",
  "direction": "below",
  "discordUrl": "https://discord.com/api/webhooks/…",
  "email": "[email protected]"
}
GET/api/v1/alerts/{id}Alerts

Fetch a single alert by id.

PATCH/api/v1/alerts/{id}Alerts

Update an alert. Only the fields you send change; pass a channel as "" to clear it, active=false to pause.

{
  "threshold": 35,
  "direction": "below",
  "active": true
}
DELETE/api/v1/alerts/{id}Alerts

Delete an alert.

GET/api/v1/unboxUtility

Case/capsule opening expected value: per-rarity odds and average values, the knife/glove pool, EV after sell fees, break-even case price and the chance of profiting. Unboxing is gambling - for almost every case the EV is below the key price.

ParamRequiredExampleDescription
nameyesHuntsman Weapon Casecase or capsule name (see /v1/collections)
key_priceno2.49key cost in currency units (default 2.49)
sell_onnoskinportmarketplace whose sell fee to apply (default steam)
currencynoUSDISO 4217 code (default USD)
GET/api/v1/statusUtility

Public component health: DB connectivity, price ingest freshness, Buff source status, market source reachability. No auth required.

GET/api/v1/healthUtility

Minimal liveness probe: { status, db, time }. No API key required - intended for uptime monitors and load-balancer checks. Use /status for per-component detail.

Machine-readable spec: /api/v1/openapi.json