{"openapi":"3.1.0","info":{"title":"CS Price API","version":"1.1.0","description":"Public price API for the CS2 (Counter-Strike 2) skin ecosystem.\n\nThe API aggregates current listing prices, historical changes, averages,\nbuy-orders and liquidity from multiple marketplaces into a single, authenticated\nJSON endpoint per marketplace, plus a cross-marketplace `/v1/prices/search`\nendpoint.\n\n## Authentication\n\nEvery non-documentation endpoint requires an API key in the `x-api-key`\nrequest header. Keys are issued per customer and optionally scoped to a\nsubset of endpoints (endpoint ACL). They also enforce a per-minute and\nper-day rate limit.\n\n### Planned: `Authorization: Bearer` (not yet accepted)\n\nA future release will additionally accept an `Authorization: Bearer <jwt>`\nheader as a second, equivalent authentication method. It is **not** yet\nimplemented on the server – requests using only a Bearer token will be\nrejected with `401 \"Missing API key\"`. Keep using `x-api-key` until this\ndocument is updated to mark Bearer as supported.\n\n## Response format stability\n\nAll response shapes documented here reflect what the server **currently**\nreturns. In particular:\n\n- Numeric fields backed by a SQL `DECIMAL` column (prices, percentage\n  changes, averages, liquidity) are serialized as **strings**, not numbers.\n  Example: `\"price_rmb\": \"7333.0000\"`. Clients must parse them as\n  fixed-point / arbitrary-precision decimals.\n- `stattrak` and `souvenir` are serialized as **integers** (`0` or `1`),\n  not booleans.\n- `updated_at` is ISO-8601 UTC (`YYYY-MM-DDTHH:mm:ss.sssZ`).\n- `liquidity` comes from a `LEFT JOIN` on an internal skin catalog table\n  and may be `null` if the skin is not present there.\n\n### Planned: structured errors (non-breaking, additive)\n\nToday, every error response is a JSON object of the form\n`{ \"error\": \"<human-readable string>\" }`. A future release may add an\noptional `error_details` object (`code`, `type`, `message`) alongside the\nexisting `error` string. The string field will remain for backwards\ncompatibility, so existing clients are not affected.\n","contact":{"name":"CS Price API Support","url":"https://cspriceapi.com"}},"servers":[{"url":"https://api.cspriceapi.com","description":"Production"},{"url":"http://localhost:8080","description":"Local development"}],"tags":[{"name":"Prices","description":"Current prices, listing counts and historical snapshots per marketplace."},{"name":"Search","description":"Cross-marketplace lookup for a specific `market_hash_name`."}],"security":[{"ApiKeyAuth":[]}],"paths":{"/v1/prices/youpin":{"get":{"tags":["Prices"],"summary":"Get current YouPin prices","description":"Returns the latest YouPin (悠悠有品) price snapshot for every skin in the\ncatalog, joined with the internal liquidity score.\n\nThe fields `buy_order_price` and `fast_shipping` are intentionally\nstripped from the response – use `/v1/prices/youpin/buyorder` for\nbuy-order data.\n","operationId":"getYoupinPrices","responses":{"200":{"description":"Successful response with current YouPin prices.","headers":{"Cache-Control":{"description":"Downstream cache hint.","schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoupinPricesResponse"},"examples":{"ok":{"value":{"data":[{"id":30155,"market_hash_name":"★ Hand Wraps | Spruce DDPAT (Factory New)","stattrak":0,"souvenir":0,"price_rmb":"7333.0000","change_24h":"-1.40","change_7d":"-1.63","change_30d":"-7.67","change_90d":"-15.60","avg_7d":"7331.46","avg_30d":"7513.31","avg_90d":"7788.60","count":8,"phase":"","updated_at":"2026-04-21T12:06:35.000Z","youpin_template_id":57643,"liquidity":"12.16"}],"source":"YouPin","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:10:00.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/youpin/buyorder":{"get":{"tags":["Prices"],"summary":"Get current YouPin buy-order prices","description":"Returns YouPin buy-order bids (and the separate \"blue\" buy-order price\nused for certain items, e.g. Dopplers) for every tracked skin.\n","operationId":"getYoupinBuyorders","responses":{"200":{"description":"Successful response with current YouPin buy-orders.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoupinBuyorderResponse"},"examples":{"ok":{"value":{"data":[{"id":1,"market_hash_name":"Glock-18 | Gamma Doppler (Factory New) (Phase 2)","templateId":57912,"buyorder_price":"1122.50","blue_buyorder_price":"980.00","phase":"Phase 2","typeId":42,"updated_at":"2026-04-21T12:15:00.000Z","count":36}],"source":"YouPin","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:00.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/buff163":{"get":{"tags":["Prices"],"summary":"Get current Buff163 prices","description":"Returns the current Buff163 (网易 BUFF) price snapshot per skin including\n24h/7d/30d/90d percentage change, 7d/30d/90d averages, listing count,\na direct `item_page_url` and the internal liquidity score. Prices are\nin Chinese Yuan (CNY / RMB).\n","operationId":"getBuff163Prices","responses":{"200":{"description":"Successful response with current Buff163 prices.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Buff163PricesResponse"},"examples":{"ok":{"value":{"data":[{"id":62235,"market_hash_name":"Glock-18 | Gamma Doppler (Factory New)","stattrak":0,"souvenir":0,"exterior":"Factory new","price":"1333.50","change_24h":"-0.90","change_7d":"1.20","change_30d":"-3.40","change_90d":"8.90","avg_7d":"1320.10","avg_30d":"1378.55","avg_90d":"1250.00","count":586,"updated_at":"2026-04-21T12:20:00.000Z","item_page_url":"https://buff.163.com/goods/776015","liquidity":"8.70"}],"source":"Buff163","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:05.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/c5game":{"get":{"tags":["Prices"],"summary":"Get current C5Game prices","description":"Returns the current C5Game price snapshot per skin. Prices are in\nChinese Yuan (CNY / RMB).\n","operationId":"getC5GamePrices","responses":{"200":{"description":"Successful response with current C5Game prices.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/C5GamePricesResponse"},"examples":{"ok":{"value":{"data":[{"id":10,"market_hash_name":"AK-47 | Redline (Field-Tested)","item_page_url":"https://www.c5game.com/en/csgo/product/123456","stattrak":0,"souvenir":0,"exterior":"Field-Tested","price":"138.20","change_24h":"0.50","change_7d":"1.80","change_30d":"-2.10","change_90d":"4.90","avg_7d":"137.40","avg_30d":"139.80","avg_90d":"133.20","count":241,"updated_at":"2026-04-21T12:18:00.000Z","liquidity":"7.40"}],"source":"C5Game","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:10.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/ecosteam":{"get":{"tags":["Prices"],"summary":"Get current EcoSteam prices","description":"Returns the current EcoSteam price snapshot per skin. Prices are in\nChinese Yuan (CNY / RMB).\n","operationId":"getEcoSteamPrices","responses":{"200":{"description":"Successful response with current EcoSteam prices.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EcoSteamPricesResponse"},"examples":{"ok":{"value":{"data":[{"id":5,"market_hash_name":"AWP | Dragon Lore (Field-Tested)","item_page_url":"https://www.ecosteam.cn/item/12345","stattrak":0,"souvenir":0,"exterior":"Field-Tested","price":"91200.00","change_24h":"0.10","change_7d":"-0.80","change_30d":"2.40","change_90d":"11.20","avg_7d":"91800.00","avg_30d":"89400.00","avg_90d":"82000.00","count":3,"updated_at":"2026-04-21T12:19:00.000Z","liquidity":"1.20"}],"source":"EcoSteam","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:15.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/skinbaron":{"get":{"tags":["Prices"],"summary":"Get current SkinBaron prices","description":"Returns the current SkinBaron price snapshot per skin. Prices are in\nEuros (EUR).\n","operationId":"getSkinBaronPrices","responses":{"200":{"description":"Successful response with current SkinBaron prices.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkinBaronPricesResponse"},"examples":{"ok":{"value":{"data":[{"id":42,"market_hash_name":"★ Karambit | Fade (Factory New)","stattrak":0,"souvenir":0,"exterior":"Factory New","price":"2899.00","change_24h":"0.20","change_7d":"-0.50","change_30d":"1.10","change_90d":"6.30","avg_7d":"2890.00","avg_30d":"2870.00","avg_90d":"2730.00","count":9,"updated_at":"2026-04-21T12:17:00.000Z","item_page_url":"https://skinbaron.de/en/csgo/karambit-fade-factory-new","liquidity":"4.10"}],"source":"SkinBaron","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:20.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/skinport":{"get":{"tags":["Prices"],"summary":"Get current Skinport prices","description":"Returns the current Skinport price snapshot per skin. Prices are in\nEuros (EUR).\n","operationId":"getSkinportPrices","responses":{"200":{"description":"Successful response with current Skinport prices.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkinportPricesResponse"},"examples":{"ok":{"value":{"data":[{"id":101,"market_hash_name":"AK-47 | Asiimov (Field-Tested)","item_page_url":"https://skinport.com/item/ak-47-asiimov-field-tested","stattrak":0,"souvenir":0,"exterior":"Field-Tested","price":"68.40","change_24h":"-0.30","change_7d":"0.80","change_30d":"-1.60","change_90d":"3.20","avg_7d":"67.90","avg_30d":"69.10","avg_90d":"66.50","count":412,"updated_at":"2026-04-21T12:16:00.000Z","liquidity":"9.20"}],"source":"Skinport","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:25.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/market-csgo":{"get":{"tags":["Prices"],"summary":"Get current Market.CSGO prices","description":"Returns the current Market.CSGO price snapshot per skin. Additionally\nincludes a 7-day sales counter (`sales7`). Prices are in US Dollars\n(USD).\n","operationId":"getMarketCsgoPrices","responses":{"200":{"description":"Successful response with current Market.CSGO prices.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketCsgoPricesResponse"},"examples":{"ok":{"value":{"data":[{"id":1,"market_hash_name":"Sticker | BLAST.tv | Paris 2023","item_page_url":"https://market.csgo.com/en/item/123/Sticker-BLAST.tv-Paris-2023","stattrak":0,"souvenir":0,"exterior":null,"price":"0.01","change_24h":"0.00","change_7d":"-0.10","change_30d":"0.20","change_90d":"1.00","avg_7d":"0.01","avg_30d":"0.01","avg_90d":"0.01","count":5823,"sales7":214,"updated_at":"2026-04-21T12:13:16.000Z","liquidity":"9.80"}],"source":"Market CSGO","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:30.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/float-ranged":{"get":{"tags":["Prices"],"summary":"Get float-ranged short list","description":"Returns the internal \"ShortList\" – a curated selection of float-range\nfiltered offers (e.g. `0.00 – 0.07` float Dopplers) including the\ncurrent first- and fifth-listing prices, previous price, total listing\ncount and capture timestamp.\n\nThe `phase` field is auto-translated from the source's Chinese\nrepresentation (`绿宝石`, `红宝石`, `蓝宝石`, `黑珍珠`, `阶段 1..4`) into the\nEnglish equivalent (`Emerald`, `Ruby`, `Sapphire`, `Black Pearl`,\n`Phase 1..4`).\n","operationId":"getFloatRangedPrices","responses":{"200":{"description":"Successful response with the float-ranged short list.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloatRangedPricesResponse"},"examples":{"ok":{"value":{"data":[{"commodityName":"Glock-18 | Gamma Doppler (Factory New)","selected_filter_text":"0.00-0.07","phase":"Phase 2","templateId":57912,"totalCount":12,"price_first":"1230.0000","captured_at":"2026-04-21T11:50:00.000Z","price_5h":"1285.0000","price_old":"1260.0000","updated_at":"2026-04-21T12:00:00.000Z"}],"source":"ShortList","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:35.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v2/prices/float-ranged":{"get":{"tags":["Prices"],"summary":"Get float-ranged prices (v2)","description":"Returns float-ranged rows from `csgo_api.float_ranged_skins`.\n\nThis v2 payload is intentionally slim and only includes:\n`market_hash_name`, `float_range`, `phase`, `count`,\n`price_rmb` and `updated_at`.\n\nThe `phase` field is translated to English where applicable.\n","operationId":"getFloatRangedPricesV2","responses":{"200":{"description":"Successful response with float-ranged v2 data.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloatRangedV2PricesResponse"},"examples":{"ok":{"value":{"data":[{"market_hash_name":"Glock-18 | Gamma Doppler (Factory New)","float_range":"0.00-0.07","phase":"Phase 2","count":12,"price_rmb":"1230.0000","updated_at":"2026-04-21T12:00:00.000Z"}],"source":"csgo_api.float_ranged_skins","requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:35.000Z"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/prices/search":{"get":{"tags":["Search"],"summary":"Look up a specific skin across all marketplaces","description":"Fetches the current price of a single `market_hash_name` from every\nsupported marketplace in one request.\n\n\nIf the query looks like a Doppler or Gamma Doppler skin (case-insensitive\nsubstring `doppler`), the server strips any existing phase annotation\nfrom the input and queries **all** phase variants in parallel:\n\n- Regular Doppler: `(Ruby)`, `(Sapphire)`, `(Black Pearl)`,\n  `(Phase 1)`..`(Phase 4)`\n- Gamma Doppler: `(Emerald)`, `(Phase 1)`..`(Phase 4)`\n\nThe phase suffix is appended **after** the exterior, e.g.\n`Glock-18 | Gamma Doppler (Factory New) (Phase 2)`.\n\nThe response schema therefore differs between the two cases:\n\n- `is_doppler: false` → per marketplace either a single item object or `null`.\n- `is_doppler: true`  → per marketplace an **array** of matched phase variants (possibly empty).\n\nClients should branch on the top-level `is_doppler` flag to select the\ncorrect variant.\n","operationId":"searchSkin","parameters":[{"$ref":"#/components/parameters/MarketHashNameQuery"}],"responses":{"200":{"description":"Successful response. Payload shape depends on `is_doppler`.","headers":{"Cache-Control":{"schema":{"type":"string","example":"public, max-age=30"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"},"examples":{"nonDoppler":{"summary":"Non-Doppler lookup","value":{"market_hash_name":"AK-47 | Redline (Field-Tested)","is_doppler":false,"search_variants":["AK-47 | Redline (Field-Tested)"],"data":{"youpin":{"id":210,"market_hash_name":"AK-47 | Redline (Field-Tested)","stattrak":0,"souvenir":0,"price_rmb":"142.00","change_24h":"0.30","change_7d":"1.10","change_30d":"-0.80","change_90d":"4.20","avg_7d":"141.20","avg_30d":"143.80","avg_90d":"136.00","count":612,"phase":"","updated_at":"2026-04-21T12:06:35.000Z","youpin_template_id":1021,"liquidity":"8.90"},"buff163":{"id":62235,"market_hash_name":"AK-47 | Redline (Field-Tested)","stattrak":0,"souvenir":0,"exterior":"Field-Tested","price":"138.80","change_24h":"0.10","change_7d":"0.90","change_30d":"-1.10","change_90d":"3.80","avg_7d":"138.20","avg_30d":"140.10","avg_90d":"133.50","count":1203,"updated_at":"2026-04-21T12:20:00.000Z","item_page_url":"https://buff.163.com/goods/35247","liquidity":"9.10"},"c5game":null,"ecosteam":null,"skinbaron":{"id":18,"market_hash_name":"AK-47 | Redline (Field-Tested)","stattrak":0,"souvenir":0,"exterior":"Field-Tested","price":"17.90","change_24h":"-0.20","change_7d":"0.80","change_30d":"-1.40","change_90d":"2.90","avg_7d":"17.85","avg_30d":"18.10","avg_90d":"17.40","count":240,"updated_at":"2026-04-21T12:17:00.000Z","item_page_url":"https://skinbaron.de/en/csgo/ak-47-redline-field-tested","liquidity":"9.00"},"skinport":{"id":77,"market_hash_name":"AK-47 | Redline (Field-Tested)","item_page_url":"https://skinport.com/item/ak-47-redline-field-tested","stattrak":0,"souvenir":0,"exterior":"Field-Tested","price":"18.20","change_24h":"0.00","change_7d":"0.90","change_30d":"-1.20","change_90d":"3.30","avg_7d":"18.10","avg_30d":"18.30","avg_90d":"17.60","count":378,"updated_at":"2026-04-21T12:16:00.000Z","liquidity":"9.20"},"market_csgo":{"id":4412,"market_hash_name":"AK-47 | Redline (Field-Tested)","item_page_url":"https://market.csgo.com/en/item/4412/AK-47-Redline-Field-Tested","stattrak":0,"souvenir":0,"exterior":"Field-Tested","price":"19.45","change_24h":"0.10","change_7d":"0.70","change_30d":"-0.90","change_90d":"3.60","avg_7d":"19.30","avg_30d":"19.60","avg_90d":"18.80","count":980,"sales7":142,"updated_at":"2026-04-21T12:13:16.000Z","liquidity":"9.30"}},"requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:40.000Z"}},"doppler":{"summary":"Doppler lookup (all phases)","value":{"market_hash_name":"Glock-18 | Gamma Doppler (Factory New)","is_doppler":true,"search_variants":["Glock-18 | Gamma Doppler (Factory New) (Emerald)","Glock-18 | Gamma Doppler (Factory New) (Phase 1)","Glock-18 | Gamma Doppler (Factory New) (Phase 2)","Glock-18 | Gamma Doppler (Factory New) (Phase 3)","Glock-18 | Gamma Doppler (Factory New) (Phase 4)"],"data":{"youpin":[{"id":30155,"market_hash_name":"Glock-18 | Gamma Doppler (Factory New) (Emerald)","stattrak":0,"souvenir":0,"price_rmb":"7333.0000","change_24h":"-1.40","change_7d":"-1.63","change_30d":"-7.67","change_90d":"-15.60","avg_7d":"7331.46","avg_30d":"7513.31","avg_90d":"7788.60","count":8,"phase":"Emerald","updated_at":"2026-04-21T12:06:35.000Z","youpin_template_id":57643,"liquidity":"2.10"},{"id":30156,"market_hash_name":"Glock-18 | Gamma Doppler (Factory New) (Phase 2)","stattrak":0,"souvenir":0,"price_rmb":"1320.0000","change_24h":"-0.90","change_7d":"1.20","change_30d":"-3.40","change_90d":"8.90","avg_7d":"1320.10","avg_30d":"1378.55","avg_90d":"1250.00","count":42,"phase":"Phase 2","updated_at":"2026-04-21T12:06:35.000Z","youpin_template_id":57912,"liquidity":"5.40"}],"buff163":[],"c5game":[],"ecosteam":[],"skinbaron":[],"skinport":[],"market_csgo":[]},"requestor":"customer@example.com","plan":"pro","timestamp":"2026-04-21T12:20:45.000Z"}}}}}},"400":{"description":"Missing or invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"missingParam":{"value":{"error":"Missing parameter: market_hash_name"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key issued per customer. Send it in the `x-api-key` header on every\nrequest. Keys can be plan-scoped (per-minute and per-day rate limits)\nand endpoint-scoped (ACL). Inactive or expired keys will be rejected\nwith `401`.\n"}},"parameters":{"MarketHashNameQuery":{"name":"market_hash_name","in":"query","required":true,"description":"Steam `market_hash_name` of the skin to look up. For Dopplers /\nGamma Dopplers the phase suffix is optional – it will be stripped and\nevery phase variant will be queried.\n","schema":{"type":"string","minLength":1},"examples":{"nonDoppler":{"value":"AK-47 | Redline (Field-Tested)"},"doppler":{"value":"Glock-18 | Gamma Doppler (Factory New)"}}}},"responses":{"Unauthorized":{"description":"Missing, invalid, disabled or expired API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"missing":{"value":{"error":"Missing API key"}},"invalid":{"value":{"error":"Invalid API key"}},"disabled":{"value":{"error":"API key disabled"}},"expired":{"value":{"error":"API key expired"}}}}}},"Forbidden":{"description":"The API key is valid but is not allowed to call this endpoint (endpoint ACL).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"acl":{"value":{"error":"Endpoint not allowed for this API key"}}}}}},"RateLimited":{"description":"Per-minute or per-day rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"perMinute":{"value":{"error":"Rate limit exceeded (per minute)"}},"perDay":{"value":{"error":"Daily limit exceeded"}}}}}},"InternalError":{"description":"Internal server error – database unreachable, unexpected failure, etc.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"generic":{"value":{"error":"Internal server error"}},"db":{"value":{"error":"DB error"}}}}}}},"schemas":{"DecimalString":{"type":"string","description":"Fixed-point decimal value serialized as a string (preserves precision\nacross languages). Parse with an arbitrary-precision decimal library;\ndo **not** parse as a native float.\n","pattern":"^-?\\d+(\\.\\d+)?$","example":"1234.5600"},"TinyBool":{"type":"integer","enum":[0,1],"nullable":true,"description":"Boolean stored as `tinyint(1)`; `0` = false, `1` = true.","example":0},"Exterior":{"type":"string","nullable":true,"description":"Exterior (wear) of the skin. Typical values: `Factory New`,\n`Minimal Wear`, `Field-Tested`, `Well-Worn`, `Battle-Scarred`.\nCasing may vary between sources (e.g. Buff163 uses `\"Factory new\"`).\n","example":"Field-Tested"},"Phase":{"type":"string","nullable":true,"description":"Doppler phase, normalised to English. Empty string or `null` for\nnon-phase items.\n","example":"Phase 2"},"UpdatedAt":{"type":"string","format":"date-time","description":"ISO-8601 UTC timestamp (millisecond precision).","example":"2026-04-21T12:06:35.000Z"},"BaseWrapper":{"type":"object","description":"Envelope fields returned by every `GET /v1/prices/*` response.","properties":{"source":{"type":"string","description":"Human-readable marketplace identifier."},"requestor":{"type":"string","format":"email","description":"Email address associated with the API key making the call.","example":"customer@example.com"},"plan":{"type":"string","description":"Plan of the API key (e.g. `free`, `pro`, `enterprise`).","example":"pro"},"timestamp":{"allOf":[{"$ref":"#/components/schemas/UpdatedAt"}],"description":"Server time when this response was produced."}},"required":["source","timestamp"]},"YoupinItem":{"type":"object","description":"Row from `youpin_data` left-joined with `skins_data.liquidity`.","properties":{"id":{"type":"integer","example":30155},"market_hash_name":{"type":"string","example":"★ Hand Wraps | Spruce DDPAT (Factory New)"},"stattrak":{"$ref":"#/components/schemas/TinyBool"},"souvenir":{"$ref":"#/components/schemas/TinyBool"},"price_rmb":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest current listing price on YouPin, in CNY (RMB).","example":"7333.0000"},"change_24h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"24h price change in percent.","example":"-1.40"},"change_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"-1.63"},"change_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"-7.67"},"change_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"-15.60"},"avg_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"7331.46"},"avg_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"7513.31"},"avg_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"7788.60"},"count":{"type":"integer","nullable":true,"description":"Number of active listings.","example":8},"phase":{"$ref":"#/components/schemas/Phase"},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"youpin_template_id":{"type":"integer","nullable":true,"description":"YouPin internal template id.","example":57643},"liquidity":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Internal liquidity score (0.00 – 10.00). `null` if the skin is not in the internal catalog.","example":"12.16"}},"required":["id","market_hash_name","updated_at"]},"YoupinBuyorderItem":{"type":"object","description":"Row from `youpin_buyorder`.","properties":{"id":{"type":"integer","example":1},"market_hash_name":{"type":"string","example":"Glock-18 | Gamma Doppler (Factory New) (Phase 2)"},"templateId":{"type":"integer","nullable":true,"example":57912},"buyorder_price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Highest standing buy-order price (CNY / RMB).","example":"1122.50"},"blue_buyorder_price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Highest \"blue\"-tier buy-order price (CNY / RMB), used e.g. for certain Doppler phases.","example":"980.00"},"phase":{"$ref":"#/components/schemas/Phase"},"typeId":{"type":"integer","nullable":true,"example":42},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"count":{"type":"integer","nullable":true,"example":36}},"required":["id","market_hash_name"]},"Buff163Item":{"type":"object","description":"Row from `buff_data` left-joined with `skins_data.liquidity`.","properties":{"id":{"type":"integer","example":62235},"market_hash_name":{"type":"string","example":"Glock-18 | Gamma Doppler (Factory New)"},"stattrak":{"$ref":"#/components/schemas/TinyBool"},"souvenir":{"$ref":"#/components/schemas/TinyBool"},"exterior":{"$ref":"#/components/schemas/Exterior"},"price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest current listing price on Buff163, in CNY (RMB).","example":"1333.50"},"change_24h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"count":{"type":"integer","nullable":true,"example":586},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"item_page_url":{"type":"string","format":"uri","nullable":true,"example":"https://buff.163.com/goods/776015"},"liquidity":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"8.70"}},"required":["id","market_hash_name","updated_at"]},"C5GameItem":{"type":"object","description":"Row from `c5game_data` left-joined with `skins_data.liquidity`.","properties":{"id":{"type":"integer","example":10},"market_hash_name":{"type":"string","example":"AK-47 | Redline (Field-Tested)"},"item_page_url":{"type":"string","format":"uri","nullable":true,"example":"https://www.c5game.com/en/csgo/product/123456"},"stattrak":{"$ref":"#/components/schemas/TinyBool"},"souvenir":{"$ref":"#/components/schemas/TinyBool"},"exterior":{"$ref":"#/components/schemas/Exterior"},"price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest current listing price on C5Game, in CNY (RMB).","example":"138.20"},"change_24h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"count":{"type":"integer","nullable":true,"example":241},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"liquidity":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"7.40"}},"required":["id","market_hash_name","updated_at"]},"EcoSteamItem":{"type":"object","description":"Row from `ecosteam_data` left-joined with `skins_data.liquidity`.","properties":{"id":{"type":"integer","example":5},"market_hash_name":{"type":"string","example":"AWP | Dragon Lore (Field-Tested)"},"item_page_url":{"type":"string","format":"uri","nullable":true,"example":"https://www.ecosteam.cn/item/12345"},"stattrak":{"$ref":"#/components/schemas/TinyBool"},"souvenir":{"$ref":"#/components/schemas/TinyBool"},"exterior":{"$ref":"#/components/schemas/Exterior"},"price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest current listing price on EcoSteam, in CNY (RMB).","example":"91200.00"},"change_24h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"count":{"type":"integer","nullable":true,"example":3},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"liquidity":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"1.20"}},"required":["id","market_hash_name","updated_at"]},"SkinBaronItem":{"type":"object","description":"Row from `skinbaron_data` left-joined with `skins_data.liquidity`.","properties":{"id":{"type":"integer","example":42},"market_hash_name":{"type":"string","example":"★ Karambit | Fade (Factory New)"},"stattrak":{"$ref":"#/components/schemas/TinyBool"},"souvenir":{"$ref":"#/components/schemas/TinyBool"},"exterior":{"$ref":"#/components/schemas/Exterior"},"price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest current listing price on SkinBaron, in EUR.","example":"2899.00"},"change_24h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"count":{"type":"integer","nullable":true,"example":9},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"item_page_url":{"type":"string","format":"uri","nullable":true,"example":"https://skinbaron.de/en/csgo/karambit-fade-factory-new"},"liquidity":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"4.10"}},"required":["id","market_hash_name","updated_at"]},"SkinportItem":{"type":"object","description":"Row from `skinport_data` left-joined with `skins_data.liquidity`.","properties":{"id":{"type":"integer","example":101},"market_hash_name":{"type":"string","example":"AK-47 | Asiimov (Field-Tested)"},"item_page_url":{"type":"string","format":"uri","nullable":true,"example":"https://skinport.com/item/ak-47-asiimov-field-tested"},"stattrak":{"$ref":"#/components/schemas/TinyBool"},"souvenir":{"$ref":"#/components/schemas/TinyBool"},"exterior":{"$ref":"#/components/schemas/Exterior"},"price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest current listing price on Skinport, in EUR.","example":"68.40"},"change_24h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"count":{"type":"integer","nullable":true,"example":412},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"liquidity":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"9.20"}},"required":["id","market_hash_name","updated_at"]},"MarketCsgoItem":{"type":"object","description":"Row from `market_csgo_data` left-joined with `skins_data.liquidity`.","properties":{"id":{"type":"integer","example":1},"market_hash_name":{"type":"string","example":"Sticker | BLAST.tv | Paris 2023"},"item_page_url":{"type":"string","format":"uri","nullable":true,"example":"https://market.csgo.com/en/item/123/Sticker-BLAST.tv-Paris-2023"},"stattrak":{"$ref":"#/components/schemas/TinyBool"},"souvenir":{"$ref":"#/components/schemas/TinyBool"},"exterior":{"$ref":"#/components/schemas/Exterior"},"price":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest current listing price on Market.CSGO, in USD.","example":"0.01"},"change_24h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"change_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_7d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_30d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"avg_90d":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true},"count":{"type":"integer","nullable":true,"example":5823},"sales7":{"type":"integer","nullable":true,"description":"Number of sales over the last 7 days.","example":214},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"liquidity":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"example":"9.80"}},"required":["id","market_hash_name","updated_at"]},"FloatRangedItem":{"type":"object","description":"Row from the internal float-ranged `ShortList` table.","properties":{"commodityName":{"type":"string","example":"Glock-18 | Gamma Doppler (Factory New)"},"selected_filter_text":{"type":"string","description":"Float-range filter used to capture this row.","example":"0.00-0.07"},"phase":{"$ref":"#/components/schemas/Phase"},"templateId":{"type":"integer","nullable":true,"example":57912},"totalCount":{"type":"integer","nullable":true,"description":"Total number of listings matching the float-range filter.","example":12},"price_first":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Current lowest listing price within the float range (CNY / RMB).","example":"1230.0000"},"captured_at":{"type":"string","format":"date-time","nullable":true,"description":"When the snapshot was captured on the source.","example":"2026-04-21T11:50:00.000Z"},"price_5h":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Price of the 5th lowest listing in the range (`price_5th` in the source table).","example":"1285.0000"},"price_old":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Previous captured price (used to compute movement).","example":"1260.0000"},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"}},"required":["commodityName","selected_filter_text","phase","updated_at"]},"FloatRangedV2Item":{"type":"object","description":"Row from `csgo_api.float_ranged_skins` exposed by `/v2/prices/float-ranged`.","properties":{"market_hash_name":{"type":"string","example":"Glock-18 | Gamma Doppler (Factory New)"},"float_range":{"type":"string","description":"Float-range bucket/filter.","example":"0.00-0.07"},"phase":{"$ref":"#/components/schemas/Phase"},"count":{"type":"integer","nullable":true,"example":12},"price_rmb":{"allOf":[{"$ref":"#/components/schemas/DecimalString"}],"nullable":true,"description":"Lowest listing price in CNY (RMB) for this float range.","example":"1230.0000"},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"}},"required":["market_hash_name","float_range","phase","updated_at"]},"YoupinPricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/YoupinItem"}},"source":{"type":"string","enum":["YouPin"]}},"required":["data"]}]},"YoupinBuyorderResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/YoupinBuyorderItem"}},"source":{"type":"string","enum":["YouPin"]}},"required":["data"]}]},"Buff163PricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Buff163Item"}},"source":{"type":"string","enum":["Buff163"]}},"required":["data"]}]},"C5GamePricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/C5GameItem"}},"source":{"type":"string","enum":["C5Game"]}},"required":["data"]}]},"EcoSteamPricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EcoSteamItem"}},"source":{"type":"string","enum":["EcoSteam"]}},"required":["data"]}]},"SkinBaronPricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SkinBaronItem"}},"source":{"type":"string","enum":["SkinBaron"]}},"required":["data"]}]},"SkinportPricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SkinportItem"}},"source":{"type":"string","enum":["Skinport"]}},"required":["data"]}]},"MarketCsgoPricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MarketCsgoItem"}},"source":{"type":"string","enum":["Market CSGO"]}},"required":["data"]}]},"FloatRangedPricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FloatRangedItem"}},"source":{"type":"string","enum":["ShortList"]}},"required":["data"]}]},"FloatRangedV2PricesResponse":{"allOf":[{"$ref":"#/components/schemas/BaseWrapper"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FloatRangedV2Item"}},"source":{"type":"string","enum":["csgo_api.float_ranged_skins"]}},"required":["data"]}]},"SearchDataNonDoppler":{"type":"object","description":"Per-marketplace lookup results. Each key is either a single item\nobject (the skin was found on that marketplace) or `null` (not found).\n","properties":{"youpin":{"oneOf":[{"$ref":"#/components/schemas/YoupinItem"}],"nullable":true},"buff163":{"oneOf":[{"$ref":"#/components/schemas/Buff163Item"}],"nullable":true},"c5game":{"oneOf":[{"$ref":"#/components/schemas/C5GameItem"}],"nullable":true},"ecosteam":{"oneOf":[{"$ref":"#/components/schemas/EcoSteamItem"}],"nullable":true},"skinbaron":{"oneOf":[{"$ref":"#/components/schemas/SkinBaronItem"}],"nullable":true},"skinport":{"oneOf":[{"$ref":"#/components/schemas/SkinportItem"}],"nullable":true},"market_csgo":{"oneOf":[{"$ref":"#/components/schemas/MarketCsgoItem"}],"nullable":true}},"required":["youpin","buff163","c5game","ecosteam","skinbaron","skinport","market_csgo"]},"SearchDataDoppler":{"type":"object","description":"Per-marketplace lookup results for Doppler skins. Each key is an\n**array** containing every phase variant found (possibly empty).\n","properties":{"youpin":{"type":"array","items":{"$ref":"#/components/schemas/YoupinItem"}},"buff163":{"type":"array","items":{"$ref":"#/components/schemas/Buff163Item"}},"c5game":{"type":"array","items":{"$ref":"#/components/schemas/C5GameItem"}},"ecosteam":{"type":"array","items":{"$ref":"#/components/schemas/EcoSteamItem"}},"skinbaron":{"type":"array","items":{"$ref":"#/components/schemas/SkinBaronItem"}},"skinport":{"type":"array","items":{"$ref":"#/components/schemas/SkinportItem"}},"market_csgo":{"type":"array","items":{"$ref":"#/components/schemas/MarketCsgoItem"}}},"required":["youpin","buff163","c5game","ecosteam","skinbaron","skinport","market_csgo"]},"SearchResponseNonDoppler":{"type":"object","description":"Search response when the queried skin is **not** a Doppler.","properties":{"market_hash_name":{"type":"string","example":"AK-47 | Redline (Field-Tested)"},"is_doppler":{"type":"boolean","enum":[false]},"search_variants":{"type":"array","items":{"type":"string"},"description":"Always contains exactly the input `market_hash_name`."},"data":{"$ref":"#/components/schemas/SearchDataNonDoppler"},"requestor":{"type":"string","format":"email"},"plan":{"type":"string"},"timestamp":{"$ref":"#/components/schemas/UpdatedAt"}},"required":["market_hash_name","is_doppler","search_variants","data","timestamp"]},"SearchResponseDoppler":{"type":"object","description":"Search response when the queried skin is a Doppler or Gamma Doppler.\nThe server queried all phase variants listed in `search_variants`.\n","properties":{"market_hash_name":{"type":"string","example":"Glock-18 | Gamma Doppler (Factory New)"},"is_doppler":{"type":"boolean","enum":[true]},"search_variants":{"type":"array","items":{"type":"string"},"description":"Every phase variant the server queried for this skin. For Gamma\nDopplers: `(Emerald)` + `(Phase 1..4)`. For regular Dopplers:\n`(Ruby)`, `(Sapphire)`, `(Black Pearl)` + `(Phase 1..4)`.\n"},"data":{"$ref":"#/components/schemas/SearchDataDoppler"},"requestor":{"type":"string","format":"email"},"plan":{"type":"string"},"timestamp":{"$ref":"#/components/schemas/UpdatedAt"}},"required":["market_hash_name","is_doppler","search_variants","data","timestamp"]},"SearchResponse":{"description":"Discriminate on the top-level boolean `is_doppler` to select the\ncorrect variant:\n\n- `is_doppler: false` → `SearchResponseNonDoppler` (each marketplace key is either an item object or `null`).\n- `is_doppler: true`  → `SearchResponseDoppler`    (each marketplace key is an array of phase variants).\n","oneOf":[{"$ref":"#/components/schemas/SearchResponseNonDoppler"},{"$ref":"#/components/schemas/SearchResponseDoppler"}]},"Error":{"type":"object","description":"Current error envelope. A future release may add an optional\n`error_details` object next to `error`; the `error` string will\nremain for backwards compatibility.\n","properties":{"error":{"type":"string","description":"Human-readable error message.","example":"Invalid API key"}},"required":["error"]}}}}