Dota 2 developer API
Dota 2 API for cosmetics and item prices
Read a public Dota 2 cosmetics inventory and query WOK's saved price catalog with the same API key. AppID 570 uses inventory context 2. This API covers items and valuations, not match, hero or MMR statistics.
game=dota2Steam AppID 570 / context 2Updated
WOK APIcurl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/inventory" --data-urlencode "steam_id=76561198090744629" --data-urlencode "game=dota2" --data-urlencode "top=0"Choose the endpoint for the data you need
One server-side WOK key authenticates every route below. An inventory request depends on Steam visibility; a saved catalog read does not depend on a player's profile.
| Task | WOK request | Response to check |
|---|---|---|
| Read public owned items | GET /v1/inventory?game=dota2 | status, items, items_total, unpriced and meta.cache_age. |
| Browse matching market names | GET /v1/items?game=dota2&q=... | Source-specific items[].prices[], market_hash_name and next_cursor. |
| Quote one exact item | GET /v1/price?game=dota2&name=... | Selected price, source, sources and updated_at. |
| Read observed daily history | GET /v1/price-history?game=dota2&name=... | Source and returned OHLC points; unobserved days are absent. |
| Revalue an active inventory snapshot | POST /v1/inventories with refresh_prices:true | Use local prices without another Steam scan; an expired snapshot returns a per-pair cache miss. |
The catalog covers named items WOK has observed; it does not promise a current quote for every item or a complete past series. Read the history coverage rules before using sparse data in a chart.
Run an inventory read, catalog search and item quote
Set WOK_API_KEY on your server. The sample SteamID and item name show valid request syntax; visibility and saved price coverage can change.
WOK APIcurl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/inventory" --data-urlencode "steam_id=76561198090744629" --data-urlencode "game=dota2" --data-urlencode "top=0"WOK APIcurl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/items" --data-urlencode "game=dota2" --data-urlencode "q=Manifold Paradox" --data-urlencode "limit=50"WOK APIcurl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/price" --data-urlencode "game=dota2" --data-urlencode "name=Manifold Paradox"q is a substring search, so compare market_hash_name exactly and follow next_cursor. name in the quote route is exact and returns 404 if WOK has no saved quote. Both catalog endpoints read local observations; neither scans a player inventory or forces a live market fetch.
Dota 2 cosmetics: ownership, quote and observed history
Use the inventory response for ownership and count, the local catalog for a named cosmetic quote, and history only when WOK has actually observed that name and source.
game=dota2 selects AppID 570 and context 2. A response can report ok, empty or private; an HTTP 200 alone does not prove that items were visible.
Copy an exact items[].markethashname into GET /v1/price for a saved USD quote. If that item lacks a usable local price, it remains in the inventory and contributes to unpriced. Gems and autographs can change the value beyond the name-level estimate.
Normal cached inventory reads apply current local catalog prices. For a deliberate cache-only valuation, use price-only refresh; a missing active snapshot returns inventory_cache_miss instead of scanning Steam.
Dota 2 inventory and refresh exampleDaily history and missing datesCompare saved market sourcesPrice selection rules
Read status and freshness before displaying a value
Dota 2 cosmetic quotes may come from Steam and configured third-party observations. Coverage and age vary by exact market hash name; socketed gems and autographs can require individual appraisal beyond a name-level quote.
A native inventory may return HTTP 200 with status=private, notfound, limited or error. Do not display its total as a zero-value backpack. Authentication, quota and request validation have their own HTTP errors.
meta.cache_age describes the inventory snapshot. items[].priceupdatedat describes the selected saved price observation. These ages can differ because a cache hit can revalue the same item list locally.
The USD total includes only matched, counted items under WOK's value rules. Show unpriced and individual pricesource fields; market prices are estimates, not guaranteed sale proceeds.
Dota 2 inventory and batch referenceSteam Market source guidePrice quote and batch referenceOpenAPI contractRequest quotas