Steam and WOK troubleshooting
Steam API errors: identify the failing layer first
A failed API call can come from your request, your WOK key, WOK's quota, Steam's profile privacy, a temporary Steam limit or a marketplace feed. The same HTTP code does not always mean the same thing across those layers. Read the response body and the endpoint contract before retrying.
Updated October 3, 2026
WOK APIcurl -i -H "Authorization: Bearer $WOK_API_KEY" "https://woksteamapi.com/v1/inventory?steam_id=76561198090744629&game=cs2"WOK HTTP error matrix
These are WOK responses. Valve's upstream code may be translated into a different WOK response or a native inventory status.
| Code or state | Likely meaning | What to do |
|---|---|---|
400 / 422 | Invalid parameter, game, SteamID or body shape. | Read the response error and OpenAPI parameter schema; correct the request before retrying. |
401 | WOK key is missing, invalid, disabled or expired. | Send Authorization: Bearer YOUR_WOK_KEY from your server; check GET /v1/key and the key guide. |
402 | Plan quota or required feature entitlement is unavailable. | Check /v1/key for remaining units, resets and add-ons. Do not retry every second. |
403 | On compatibility inventory, Steam inventory is private. On Valve Web API, a wrong key type or IP allow list may also cause 403. | Inspect the response source; verify public profile settings or the Valve credential and allow list. Do not rotate proxies for a private inventory. |
404 / 410 | Unknown profile, missing catalog price, or compatibility inventory empty; meaning depends on path. | Check endpoint and error body. A missing price is unknown, not zero; verify the exact market hash name. |
429 | WOK minute limit or upstream capacity/rate limit depending on endpoint. | Respect Retry-After when present, cache repeat reads and use bounded exponential backoff with jitter. See the 429 guide. |
500 | WOK failed while handling the request. | Retry a safe read after a short delay. If it repeats, report the route, UTC time and response code to support; keep your API key out of logs and messages. |
502 / 503 / 504 | Temporary upstream failure, unavailable service capacity or deadline. | Retry only if the operation is safe to repeat, with a cap and delay. Preserve the last successful value with its timestamp. |
HTTP 200 can still mean no usable inventory
Native GET /v1/inventory has an HTTP layer and an inventory result layer.
status=ok means the returned public snapshot was read. Check meta.cache_age, meta.cache_ttl, unpriced and items_total before displaying a value.
private, notfound and empty are distinct states. Never convert private or not-found to a zero-value inventory. The visibility guide explains which Steam fields may be unavailable.
limited and error mean a temporary read failed. Keep the last known value dated, or show unavailable. The compatibility route /steam/api/inventory maps these outcomes to HTTP errors instead.
Steam Web API and Community Market are different sources
Diagnose the exact host and endpoint that failed.
Valve's Web API overview documents public and publisher Web API hosts, publisher-key requirements and IP allow lists. It warns that repeated 403 responses from a wrong key type can incur strict IP rate limits. Steam Community inventory and Market reads have their own availability and privacy constraints; a Valve Web API key does not make another player's private inventory public.
When only a price is missing, check GET /v1/prices/coverage?game=cs2 and each item's price_statistics.coverage. A saved listing quote, a historical sale median and a buy order answer different questions. Read how valuation works before comparing a USD API quote with a marketplace checkout price or a RUB quote.
For concurrent production traffic, batch independent inventory reads with POST /v1/inventories, reuse cache hits, and use POST /v1/inventory/refresh-prices when only prices changed. A cache-only refresh returns inventory_cache_miss rather than silently fetching Steam. The cache strategy guide shows the request flow.