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 "https://skinapi.skinvaults.online/api/v1/markets?name=AK-47%20|%20Redline%20(Field-Tested)&game=cs2" \
-H "x-api-key: sk_live_xxx"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();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"]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.
OpenAPI: /api/v1/openapi.json · Status: /status
/api/v1/marketsPricesUnified 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.
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | AK-47 | Redline (Field-Tested) | market_hash_name of the item |
| game | no | cs2 | cs2 (default), dota2, rust, ... |
| currency | no | USD | ISO 4217 code (USD default, e.g. EUR, GBP) |
/api/v1/markets/batchPricesPrice 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"
}/api/v1/itemsPricesCurrent 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.
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | AK-47 | Redline (Field-Tested) | market_hash_name |
| game | no | cs2 | game key |
| currency | no | USD | ISO 4217 code (USD default, e.g. EUR, GBP) |
/api/v1/historyPricesDaily price history (cross-source average + volume). Returns up to 365 days.
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | AK-47 | Redline (Field-Tested) | market_hash_name |
| game | no | cs2 | cs2 (default), dota2, rust, ... |
| days | no | 30 | 1-365 (default 30) |
| currency | no | EUR | ISO 4217 code for price conversion (default USD, e.g. EUR, GBP) |
/api/v1/dealsPricesDeal finder: items priced below Steam across markets.
| Param | Required | Example | Description |
|---|---|---|---|
| game | no | cs2 | game key (default cs2) |
| min_discount | no | 0.15 | 0-0.95 (default 0.15) |
| currency | no | USD | ISO 4217 (default USD) |
/api/v1/feedPricesBulk 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).
| Param | Required | Example | Description |
|---|---|---|---|
| game | no | cs2 | game key (default cs2) |
| limit | no | 100 | items per page, capped by plan |
| offset | no | 0 | pagination offset (default 0) |
| min_sources | no | 3 | only items priced by at least N marketplaces |
| sort | no | gap | name (default), floor, gap or supply |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/moversPricesBiggest 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.
| Param | Required | Example | Description |
|---|---|---|---|
| game | no | cs2 | game key (default cs2) |
| days | no | 7 | 1-90 (default 7) |
| direction | no | up | both (default), up or down |
| min_price | no | 5 | ignore items starting below this price (default 1.00) |
| limit | no | 25 | 1-250 per list (default 25) |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/indexPricesAggregate 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.
| Param | Required | Example | Description |
|---|---|---|---|
| game | no | cs2 | game key (default cs2) |
| days | no | 30 | 1-365 (default 30) |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/arbitragePricesFee-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.
| Param | Required | Example | Description |
|---|---|---|---|
| game | no | cs2 | game key (default cs2) |
| min_profit | no | 1 | minimum net profit in currency units (default 0.50) |
| min_roi | no | 0.1 | minimum return on cost, 0-1 (default 0.05 = 5%) |
| limit | no | 50 | 1-200 (default 50) |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/floatFloatExact float, paint seed, pattern (Doppler phase, blue-gem tier, Fire&Ice), stickers with images and sticker value (USD), and item name+image.
| Param | Required | Example | Description |
|---|---|---|---|
| url | yes | steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198006518558A35678741806D7170682694397862 | CS2 inspect link (steam:// or https://) |
/api/v1/float/priceFloatPrice 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.
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | AK-47 | Redline (Field-Tested) | market_hash_name (wear suffix optional if you pass float) |
| float | no | 0.22 | 0-1 float value; decides the wear bucket |
| paint_seed | no | 661 | 0-1000 paint seed; drives pattern detection |
| paint_index | no | 572 | paint index from /float; required to resolve a Doppler's phase (the name doesn't encode it) |
| game | no | cs2 | game key (default cs2) |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/orderbookFloatLive 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.
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | AK-47 | Redline (Field-Tested) | market_hash_name (CS2 only) |
| depth | no | 20 | levels per side, 1-100 (default 20) |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/float/leaderboardFloatLowest (or highest) float leaderboard for a skin.
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | AK-47 | Redline (Field-Tested) | skin name |
| order | no | lowest | lowest (default) | highest |
| limit | no | 25 | 1-100 (default 25) |
/api/v1/inventoryInventoryPublic inventory priced per item with total value, plus a summary (rarity breakdown, tradable/marketable counts, top items). Supports any game.
| Param | Required | Example | Description |
|---|---|---|---|
| steam_id | yes | 76561197960435530 | SteamID64 or vanity name |
| game | no | cs2 | game key (default cs2) |
| prices | no | true | false to skip valuation (default true) |
| currency | no | USD | ISO 4217 code for prices/total (default USD) |
/api/v1/inventory/batchInventoryUp to 10 inventories in a single request.
{
"steam_ids": [
"76561197960435530",
"76561198006518558"
],
"game": "cs2"
}/api/v1/inventory/historyInventoryDaily value-over-time history for a tracked inventory.
| Param | Required | Example | Description |
|---|---|---|---|
| steam_id | yes | 76561197960435530 | SteamID64 or vanity name |
| game | no | cs2 | game key (default cs2) |
| days | no | 90 | 1-365 (default 90) |
| currency | no | USD | ISO 4217 (default USD) |
/api/v1/profileProfileSteam profile with level, CS2 playtime (hours), VAC/trade/community ban status, avatar and country.
| Param | Required | Example | Description |
|---|---|---|---|
| id | yes | 76561197960435530 | SteamID64 or vanity name |
/api/v1/friendlistProfileFriend list with friendship timestamps.
| Param | Required | Example | Description |
|---|---|---|---|
| steam_id | yes | 76561197960435530 | SteamID64 or vanity name |
/api/v1/catalogItems DBFull 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.
| Param | Required | Example | Description |
|---|---|---|---|
| game | no | cs2 | cs2 (default), dota2, rust, tf2, ... |
| limit | no | 0 | items per page, default 100. Pass 0 for the full dataset (no cap) |
| offset | no | 0 | pagination offset (default 0) |
| q | no | AK-47 | search / filter by name (partial match) |
| type | no | Rifle | CS2 weapon type filter (Rifle, Pistol, Knife, …) |
| rarity | no | Classified | CS2 rarity filter (Covert, Classified, Restricted, …) |
| prices | no | true | true to include lowest known price per item |
| sort | no | price | name (default) or price (requires prices=true) |
| currency | no | USD | ISO 4217 code for prices (default USD) |
/api/v1/items/searchItems DBAutocomplete over the CS2 skin schema. Returns BASE names (no wear suffix) - good for a picker; use /search if you need a name you can price directly.
| Param | Required | Example | Description |
|---|---|---|---|
| q | no | AK-47 Redline | search query |
| limit | no | 20 | 1-50 (default 20) |
/api/v1/searchItems DBSearch the tracked item database (any game) and get exact market_hash_names WITH the wear suffix, plus image and rarity. These are the names /markets, /items and /history expect - start here when a price lookup returns missing_wear.
| Param | Required | Example | Description |
|---|---|---|---|
| q | yes | Olive Polycam | search query (alias: name) |
| game | no | cs2 | game key (default cs2) |
| limit | no | 10 | 1-50 (default 10) |
/api/v1/items/metaItems DBFull metadata for an item (weapon, rarity, collection, crates, float range).
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | AK-47 | Redline (Field-Tested) | market_hash_name |
/api/v1/collectionsItems DBCS2 cases, capsules and collections: every set with its full item pool, the rare knife/glove pool, release date and live container price.
| Param | Required | Example | Description |
|---|---|---|---|
| name | no | Huntsman Weapon Case | one set by exact name or dataset id (returns full contents) |
| q | no | Huntsman | filter the list by name (partial match) |
| kind | no | crate | crate | collection |
| type | no | Case | crate type (Case, Sticker Capsule, Souvenir Case, …) |
| contents | no | true | true to inline the item pool on list results |
| prices | no | true | true to include the container's lowest live price |
| limit | no | 100 | 1-500 (default 100) |
| offset | no | 0 | pagination offset (default 0) |
| currency | no | USD | ISO 4217 code for prices (default USD) |
/api/v1/currencyUtilityLive USD-based FX rates - the same table every price endpoint uses for ?currency=. Pass from/to/amount to convert a single value.
| Param | Required | Example | Description |
|---|---|---|---|
| from | no | USD | ISO 4217 source currency (with `to`, returns one conversion) |
| to | no | EUR | ISO 4217 target currency |
| amount | no | 42.29 | amount to convert (default 1) |
/api/v1/resolveProfileResolve a SteamID64, vanity name or pasted profile URL to every ID format (SteamID64, STEAM_1:Y:Z, [U:1:id], account id).
| Param | Required | Example | Description |
|---|---|---|---|
| id | yes | gabelogannewell | SteamID64, vanity name or full profile URL |
/api/v1/tradeupUtilityTrade-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
}
]
}/api/v1/alertsAlertsList every price alert on your account. Each fires when an item's lowest price crosses your threshold, via webhook, Discord and/or email.
/api/v1/alertsAlertsCreate 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]"
}/api/v1/alerts/{id}AlertsFetch a single alert by id.
/api/v1/alerts/{id}AlertsUpdate 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
}/api/v1/alerts/{id}AlertsDelete an alert.
/api/v1/tradeup/searchUtilityFind profitable trade-up contracts ranked by return on cost after fees. Scans single-collection contracts (10x the same skin) across every collection, rarity and wear. Verify a candidate with POST /v1/tradeup before crafting - input floats here are assumed.
| Param | Required | Example | Description |
|---|---|---|---|
| max_cost | no | 50 | max total contract cost in currency units |
| min_roi | no | 0.05 | minimum return on cost, e.g. 0.1 = 10% (default 0) |
| rarity | no | Mil-Spec Grade | input rarity filter |
| collection | no | Huntsman | collection name filter (partial match) |
| liquid_only | no | true | true to keep only contracts with 10+ known listings of the input |
| sell_on | no | skinport | marketplace whose sell fee to apply (default steam) |
| limit | no | 25 | 1-100 (default 25) |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/unboxUtilityCase/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.
| Param | Required | Example | Description |
|---|---|---|---|
| name | yes | Huntsman Weapon Case | case or capsule name (see /v1/collections) |
| key_price | no | 2.49 | key cost in currency units (default 2.49) |
| sell_on | no | skinport | marketplace whose sell fee to apply (default steam) |
| currency | no | USD | ISO 4217 code (default USD) |
/api/v1/statusUtilityPublic component health: DB connectivity, price ingest freshness, Buff source status, market source reachability. No auth required.
/api/v1/healthUtilityMinimal 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