{"openapi":"3.1.0","info":{"title":"RaceCap API","version":"1.0.0","description":"Prices of nine stores (Steam, PlayStation Store, Xbox, Nintendo eShop, Epic Games Store, GOG, EA app, Ubisoft Store, Battle.net) in every regional storefront they sell in (`/regions`, `/countries`), with history, under one canonical game catalog.\n\n## Quick start\nThe API needs a plan with API access. Create a key in your account; it is shown once. Then:\n\n```\ncurl -H \"X-API-Key: $KEY\" 'https://racecap.soracrm.net/api/v1/best?q=elden+ring&limit=5'\n```\n\n## Authentication\nSend the key in `X-API-Key` (or `Authorization: Bearer <key>`). The API is for servers and scripts: it sends no CORS headers.\n\n## Limits\nEach plan sets requests a minute and a day, the largest `limit` and `offset`, the refresh priority, forced refreshes, watch slots and keys. `GET /usage` shows them and costs nothing. Answers carry `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` and the `-Day` variants. Over a budget the answer is `429` with `Retry-After`. A refused request (400, 429) costs nothing. `POST /prices` costs one request per item, a refresh stream one per region it checks.\n\n## Parameters\nAn unknown query parameter, or one given twice, is a `400` that names it. `provider` and `country` take any letter case.\n\n## Paging\nLists come in pages: pass `next_offset` as `offset` until it is null. Sync the whole catalog with `/items` and `after`.\n\n## Freshness\nEvery price carries `seen_at`. Viewing a product or a game starts a background refresh of regions older than about 30 minutes. `max_age` (seconds) asks for prices no older than that: older ones are read again first. `max_age=0` on a refresh stream forces every region and spends a forced refresh.\n\n## Caching\nGET answers carry a weak `ETag` and `Cache-Control: private` (60 s, 300 s for cards). Send it back in `If-None-Match` to get an empty `304`.\n\n## Idempotency\n`POST /watch`, `POST /webhooks` and webhook actions take an `Idempotency-Key`: the same key and body within 24 hours replays the first answer with `Idempotent-Replayed: true`.\n\n## Webhooks\nDeliveries are POSTed JSON `{id, type, created_at, data}` signed with `X-RaceCap-Signature: t=<unix>,v1=<hex HMAC-SHA256 of \"t.body\">`. Failed deliveries retry with backoff (1 min to 12 h); a webhook failing 20 times in a row is disabled until resumed.\n\n## Errors\nJSON `{error, message}`: `400 bad_request`, `401 unauthorized` or `invalid_key`, `403 subscription_required`, `404 not_found`, `409 watch_limit` or `too_many_webhooks`, `410 gone`, `415 unsupported_media_type`, `422 no_prices` or `idempotency_mismatch`, `429 rate_limited`, `500 internal`.\n\n## Data\nPrices are read from each store's regional storefront by RaceCap's own scanner; exchange rates come from ExchangeRate-API daily."},"servers":[{"url":"https://racecap.soracrm.net/api"}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"tags":[{"name":"games","description":"Canonical games across stores"},{"name":"products","description":"Store products and their regional prices"},{"name":"lists","description":"Deals, drops, new and releases per region"},{"name":"reference","description":"Stores, regions, countries, rates, freshness"},{"name":"watchlist","description":"Price alerts and webhooks"},{"name":"account","description":"Plan and budgets"}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"},"bearerAuth":{"type":"http","scheme":"bearer","description":"The same key as Authorization: Bearer <key>"}},"schemas":{"ErrorBody":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/v1/best":{"get":{"tags":["products"],"summary":"Where each product costs least","operationId":"getBest","parameters":[{"name":"q","in":"query","required":true,"description":"Search text","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"product":{"provider":"xbox","product_id":"9P3J32CTXLRZ","name":"ELDEN RING"},"cheapest":{"provider":"xbox","product_id":"app:1245620","region":"TR","country":"TR","currency":"USD","price":"39.99","base":null,"discount":null,"ends_at":null,"free":false,"preorder":false,"subscription_only":false,"plans":[],"usd":"39.99","seen_at":"2026-10-16T15:49:49.994Z","url":"https://store.steampowered.com/app/1245620/ELDEN_RING/?cc=tr"}}],"next_offset":null}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"description":"Products matching a search, each with its cheapest region in USD"}},"/v1/products":{"get":{"tags":["products"],"summary":"Search and filter products of every store","operationId":"getProducts","parameters":[{"name":"q","in":"query","required":false,"description":"Search text","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"kind","in":"query","required":false,"description":"Product kind","schema":{"type":"string","enum":["game","edition","bundle","dlc","currency","other"]}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"provider":"steam","product_id":"app:1245620","name":"ELDEN RING","kind":"game","game_id":"elden-ring"}],"next_offset":20}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/products/{provider}/{product_id}":{"get":{"tags":["products"],"summary":"A store product with its prices","operationId":"getProductsProviderProductid","parameters":[{"name":"provider","in":"path","required":true,"description":"Store","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"product_id","in":"path","required":true,"description":"Store product id, e.g. app:1245620","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"A region of the store (see /regions), e.g. TR","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"ISO 3166 country; the store region that serves it is used","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}},{"name":"max_age","in":"query","required":false,"description":"Seconds; older prices are read again first","schema":{"type":"integer","minimum":0,"maximum":2592000}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"product":{"provider":"steam","product_id":"app:1245620","name":"ELDEN RING","kind":"game","game_id":"elden-ring"},"offers":[{"provider":"steam","product_id":"app:1245620","region":"TR","country":"TR","currency":"USD","price":"39.99","base":null,"discount":null,"ends_at":null,"free":false,"preorder":false,"subscription_only":false,"plans":[],"usd":"39.99","seen_at":"2026-10-16T15:49:49.994Z","url":"https://store.steampowered.com/app/1245620/ELDEN_RING/?cc=tr"}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/products/{provider}/{product_id}/history":{"get":{"tags":["products"],"summary":"Price history of a product","operationId":"getProductsProviderProductidHistory","parameters":[{"name":"provider","in":"path","required":true,"description":"Store","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"product_id","in":"path","required":true,"description":"Store product id","schema":{"type":"string"}},{"name":"region","in":"query","required":true,"description":"Store region","schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"Window in days; default: the whole history the plan allows","schema":{"type":"integer","minimum":1,"maximum":3650}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"region":"TR","currency":"USD","points":[{"at":"2026-10-10T17:58:53Z","price":"39.99","base":null}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/products/{provider}/{product_id}/info":{"get":{"tags":["products"],"summary":"What one store says about a product","operationId":"getProductsProviderProductidInfo","parameters":[{"name":"provider","in":"path","required":true,"description":"Store","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"product_id","in":"path","required":true,"description":"Store product id","schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"description":"Language of texts","schema":{"type":"string","enum":["en","ru"],"default":"en"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"product":{"provider":"steam","product_id":"app:1245620"},"facts":{"short":"THE CRITICALLY ACCLAIMED FANTASY ACTION RPG"}}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/products/{provider}/{product_id}/refresh":{"get":{"tags":["products"],"summary":"Refresh the prices of a product region by region, as a stream","operationId":"getProductsProviderProductidRefresh","parameters":[{"name":"provider","in":"path","required":true,"description":"Store","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"product_id","in":"path","required":true,"description":"Store product id","schema":{"type":"string"}},{"name":"regions","in":"query","required":false,"description":"Comma separated regions; default every region of the store","schema":{"type":"string","description":"comma separated"}},{"name":"max_age","in":"query","required":false,"description":"Seconds; older prices are read again first","schema":{"type":"integer","minimum":0,"maximum":2592000}}],"responses":{"200":{"description":"NDJSON stream, one JSON object per line","content":{"application/x-ndjson":{"example":{"kind":"region","region":"TR","ok":true,"offer":{"provider":"steam","product_id":"app:1245620","region":"TR","country":"TR","currency":"USD","price":"39.99","base":null,"discount":null,"ends_at":null,"free":false,"preorder":false,"subscription_only":false,"plans":[],"usd":"39.99","seen_at":"2026-10-16T15:49:49.994Z","url":"https://store.steampowered.com/app/1245620/ELDEN_RING/?cc=tr"}}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"description":"NDJSON lines: queued, running, one per region, then done. Costs one request per region it checks. max_age=0 forces every region and spends a forced refresh instead"}},"/v1/products/{provider}/{product_id}/refresh/live":{"get":{"tags":["products"],"summary":"Watch the refresh of a product that is already running, as a stream","operationId":"getProductsProviderProductidRefreshLive","parameters":[{"name":"provider","in":"path","required":true,"description":"Store","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"product_id","in":"path","required":true,"description":"Store product id","schema":{"type":"string"}}],"responses":{"200":{"description":"NDJSON stream, one JSON object per line","content":{"application/x-ndjson":{"example":{"kind":"queued","position":1}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/prices":{"post":{"tags":["products"],"summary":"Prices of many products at once","operationId":"postPrices","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"provider":"steam","product_id":"app:1245620","offers":[{"provider":"steam","product_id":"app:1245620","region":"TR","country":"TR","currency":"USD","price":"39.99","base":null,"discount":null,"ends_at":null,"free":false,"preorder":false,"subscription_only":false,"plans":[],"usd":"39.99","seen_at":"2026-10-16T15:49:49.994Z","url":"https://store.steampowered.com/app/1245620/ELDEN_RING/?cc=tr"}]}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"description":"Up to max_batch items; each costs one request. Items come back in request order with their offers or their own error","requestBody":{"required":true,"description":"{\"items\": [{\"provider\", \"product_id\", \"region\"?, \"country\"?}], \"max_age\"?}","content":{"application/json":{"example":{"items":[{"provider":"steam","product_id":"app:1245620","country":"TR"},{"provider":"psn","product_id":"c:10006560","region":"US"}]}}}}}},"/v1/lookup":{"get":{"tags":["products"],"summary":"Find products by a store link or id","operationId":"getLookup","parameters":[{"name":"q","in":"query","required":true,"description":"A store link or product id of any store","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"provider":"steam","product_id":"app:1245620","name":"ELDEN RING","game_id":"elden-ring"}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/items":{"get":{"tags":["products"],"summary":"Every item with the product that stands for it","operationId":"getItems","parameters":[{"name":"after","in":"query","required":false,"description":"item_id to continue after","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size","schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"item_id":"elden-ring:game:base","game_id":"elden-ring","kind":"game","name":"ELDEN RING","products":[{"provider":"steam","product_id":"app:1245620"}]}],"next_after":"elden-ring:game:base"}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"description":"Catalog sync: walk with \"after\" set to the last item_id of the previous page"}},"/v1/items/{item_id}/info":{"get":{"tags":["products"],"summary":"The card of one item: an edition, a DLC or a bundle","operationId":"getItemsItemidInfo","parameters":[{"name":"item_id","in":"path","required":true,"description":"Item id, e.g. elden-ring:game:base","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"item_id":"elden-ring:game:base","game_id":"elden-ring","kind":"game","name":"ELDEN RING","products":[]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/suggest":{"get":{"tags":["products"],"summary":"Suggestions while typing a search","operationId":"getSuggest","parameters":[{"name":"q","in":"query","required":true,"description":"Search text","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"games":[{"id":"elden-ring","name":"ELDEN RING"}],"entities":[]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/games":{"get":{"tags":["games"],"summary":"Search and list games","operationId":"getGames","parameters":[{"name":"q","in":"query","required":false,"description":"Search text","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"elden-ring","name":"ELDEN RING","stores":["psn","steam","xbox"]}],"next_offset":20}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/games/info":{"get":{"tags":["games"],"summary":"Cards of up to 100 games at once","operationId":"getGamesInfo","parameters":[{"name":"ids","in":"query","required":true,"description":"Comma separated game ids","schema":{"type":"string","description":"comma separated"}},{"name":"lang","in":"query","required":false,"description":"Language of texts","schema":{"type":"string","enum":["en","ru"],"default":"en"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"elden-ring","name":"ELDEN RING","info":{}}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/games/info/changes":{"get":{"tags":["games"],"summary":"Feed of changed game cards","operationId":"getGamesInfoChanges","parameters":[{"name":"after","in":"query","required":false,"description":"Cursor: the \"next\" of the previous page or an ISO time","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"elden-ring","updated_at":"2026-10-16T12:00:00Z"}],"next":"2026-10-16T12:00:00Z|elden-ring"}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/games/{id}":{"get":{"tags":["games"],"summary":"A game with its prices in every store","operationId":"getGamesId","parameters":[{"name":"id","in":"path","required":true,"description":"Game id, e.g. elden-ring","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"ISO 3166 country; the store region that serves it is used","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"game":{"id":"elden-ring","name":"ELDEN RING"},"stores":[{"provider":"steam","products":["app:1245620"],"cheapest":{"provider":"steam","product_id":"app:1245620","region":"TR","country":"TR","currency":"USD","price":"39.99","base":null,"discount":null,"ends_at":null,"free":false,"preorder":false,"subscription_only":false,"plans":[],"usd":"39.99","seen_at":"2026-10-16T15:49:49.994Z","url":"https://store.steampowered.com/app/1245620/ELDEN_RING/?cc=tr"},"offers":[{"provider":"steam","product_id":"app:1245620","region":"TR","country":"TR","currency":"USD","price":"39.99","base":null,"discount":null,"ends_at":null,"free":false,"preorder":false,"subscription_only":false,"plans":[],"usd":"39.99","seen_at":"2026-10-16T15:49:49.994Z","url":"https://store.steampowered.com/app/1245620/ELDEN_RING/?cc=tr"}]}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/games/{id}/cheapest":{"get":{"tags":["games"],"summary":"Where a game costs least","operationId":"getGamesIdCheapest","parameters":[{"name":"id","in":"path","required":true,"description":"Game id","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"provider":"steam","product_id":"app:1245620","region":"TR","country":"TR","currency":"USD","price":"39.99","base":null,"discount":null,"ends_at":null,"free":false,"preorder":false,"subscription_only":false,"plans":[],"usd":"39.99","seen_at":"2026-10-16T15:49:49.994Z","url":"https://store.steampowered.com/app/1245620/ELDEN_RING/?cc=tr"}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/games/{id}/history":{"get":{"tags":["games"],"summary":"Price history of a game","operationId":"getGamesIdHistory","parameters":[{"name":"id","in":"path","required":true,"description":"Game id","schema":{"type":"string"}},{"name":"provider","in":"query","required":true,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"region","in":"query","required":true,"description":"Store region","schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"Window in days","schema":{"type":"integer","minimum":1,"maximum":3650}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"provider":"steam","region":"TR","currency":"USD","points":[{"at":"2026-10-10T17:58:53Z","price":"39.99","base":null}]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/games/{id}/info":{"get":{"tags":["games"],"summary":"The rich card of a game","operationId":"getGamesIdInfo","parameters":[{"name":"id","in":"path","required":true,"description":"Game id","schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"description":"Language of texts","schema":{"type":"string","enum":["en","ru"],"default":"en"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"id":"elden-ring","name":"ELDEN RING","stores":["psn","steam","xbox"],"facts":[]}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/entities":{"get":{"tags":["games"],"summary":"Developers, publishers, franchises, genres and features","operationId":"getEntities","parameters":[{"name":"q","in":"query","required":false,"description":"Search text","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"description":"Entity kind","schema":{"type":"string","enum":["publisher","developer","franchise","genre","feature"]}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"publisher:bandai-namco","kind":"publisher","name":"Bandai Namco Entertainment","games":120}],"next_offset":null}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/deals":{"get":{"tags":["lists"],"summary":"Discounts in a region or country","operationId":"getDeals","parameters":[{"name":"provider","in":"query","required":false,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"region","in":"query","required":false,"description":"A region of the store (see /regions), e.g. TR","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"ISO 3166 country; the store region that serves it is used","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"description":"Products to include","schema":{"type":"string","enum":["game","dlc","all"],"default":"all"}},{"name":"min_discount","in":"query","required":false,"description":"Minimum discount percent","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"sort","in":"query","required":false,"description":"Order","schema":{"type":"string","enum":["discount","price","popular","ending"],"default":"discount"}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[],"next_offset":null}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/price-drops":{"get":{"tags":["lists"],"summary":"Price drops in a region or country","operationId":"getPriceDrops","parameters":[{"name":"provider","in":"query","required":false,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"region","in":"query","required":false,"description":"A region of the store (see /regions), e.g. TR","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"ISO 3166 country; the store region that serves it is used","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"description":"Products to include","schema":{"type":"string","enum":["game","dlc","all"],"default":"all"}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[],"next_offset":null}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/new":{"get":{"tags":["lists"],"summary":"New in a region or country","operationId":"getNew","parameters":[{"name":"provider","in":"query","required":false,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"region","in":"query","required":false,"description":"A region of the store (see /regions), e.g. TR","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"ISO 3166 country; the store region that serves it is used","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"description":"Products to include","schema":{"type":"string","enum":["game","dlc","all"],"default":"all"}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[],"next_offset":null}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/releases":{"get":{"tags":["lists"],"summary":"Releases by date in a region or country","operationId":"getReleases","parameters":[{"name":"provider","in":"query","required":false,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}},{"name":"region","in":"query","required":false,"description":"A region of the store (see /regions), e.g. TR","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"ISO 3166 country; the store region that serves it is used","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Also convert prices to this currency (field \"converted\"); default USD only","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"description":"Products to include","schema":{"type":"string","enum":["game","dlc","all"],"default":"all"}},{"name":"sort","in":"query","required":false,"description":"Order","schema":{"type":"string","enum":["date","popular"],"default":"date"}},{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[],"next_offset":null}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/providers":{"get":{"tags":["reference"],"summary":"Stores","operationId":"getProviders","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"id":"bnet","name":"Battle.net","regions":4,"products":376,"games":242}]}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/regions":{"get":{"tags":["reference"],"summary":"Regions of every store","operationId":"getRegions","parameters":[{"name":"provider","in":"query","required":false,"description":"Store: steam, psn, nintendo, epic, gog, ubisoft, xbox, ea, bnet","schema":{"type":"string","enum":["steam","psn","nintendo","epic","gog","ubisoft","xbox","ea","bnet"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"provider":"steam","region":"TR","country":"TR","currency":"USD","name":"Turkey & MENA, USD","serves":["BH","DZ"],"last_full":"2026-10-16T15:49:49Z","offers":250000}]}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/countries":{"get":{"tags":["reference"],"summary":"Countries and the store regions that serve them","operationId":"getCountries","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"country":"TR","name":"Türkiye","currency":"TRY","regions":{"steam":"TR","psn":"TR"}}]}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/rates":{"get":{"tags":["reference"],"summary":"Exchange rates to US dollars","operationId":"getRates","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"base":"USD","date":"2026-10-16","rates":{"EUR":0.89165,"TRY":41.56}}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/status":{"get":{"tags":["reference"],"summary":"Data freshness","operationId":"getStatus","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"providers":[{"provider":"steam","name":"Steam","last_full":"2026-10-16T15:49:49Z","state":"ok"}],"ready":true,"snapshot_at":"2026-10-16T17:55:01Z"}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/genres":{"get":{"tags":["reference"],"summary":"Shared genres","operationId":"getGenres","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"id":"genre:action","name":"Action","games":5000}]}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/features":{"get":{"tags":["reference"],"summary":"Shared features","operationId":"getFeatures","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"id":"feature:multiplayer","name":"Multiplayer","games":3000}]}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/usage":{"get":{"tags":["account"],"summary":"Your plan and what is left of it","operationId":"getUsage","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"plan":{"id":"api_starter","name":"API Starter","ends_at":"2026-11-16T00:00:00Z"},"requests":{"per_minute":60,"per_day":3000,"used_today":12}}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/watch":{"get":{"tags":["watchlist"],"summary":"Your watched products","operationId":"getWatch","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size, capped by the plan","schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}},{"name":"offset","in":"query","required":false,"description":"Items to skip, capped by the plan","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":1,"provider":"steam","product_id":"app:1245620","condition":{"type":"below","amount":3000,"currency":"USD"}}],"next_offset":null}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}},"post":{"tags":["watchlist"],"summary":"Watch a product","operationId":"postWatch","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Replays the first answer for the same key and body within 24 hours","schema":{"type":"string"}}],"responses":{"201":{"description":"OK","content":{"application/json":{"example":{"id":1,"provider":"steam","product_id":"app:1245620"}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"requestBody":{"required":true,"description":"{\"provider\", \"product_id\", \"regions\"?, \"condition\": {\"type\": \"drop\"|\"below\"|\"discount\"|\"any\", \"amount\"?, \"currency\"?, \"percent\"?}}","content":{"application/json":{"example":{"provider":"steam","product_id":"app:1245620","regions":["TR","AR"],"condition":{"type":"below","amount":"25.00","currency":"USD"}}}}}}},"/v1/watch/events":{"get":{"tags":["watchlist"],"summary":"Fired conditions, oldest first","operationId":"getWatchEvents","parameters":[{"name":"after","in":"query","required":false,"description":"Event id to continue after","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","required":false,"description":"Page size","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":10,"type":"below","created_at":"2026-10-16T10:00:00Z","payload":{}}],"next_after":10}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/watch/{id}":{"get":{"tags":["watchlist"],"summary":"One watched product","operationId":"getWatchId","parameters":[{"name":"id","in":"path","required":true,"description":"Watch id","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"id":1}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}},"patch":{"tags":["watchlist"],"summary":"Change regions, the condition or pause","operationId":"patchWatchId","parameters":[{"name":"id","in":"path","required":true,"description":"Watch id","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"id":1,"paused":true}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"requestBody":{"required":false,"description":"{\"regions\"?, \"condition\"?, \"paused\"?}","content":{"application/json":{"example":{"paused":true}}}}},"delete":{"tags":["watchlist"],"summary":"Stop watching","operationId":"deleteWatchId","parameters":[{"name":"id","in":"path","required":true,"description":"Watch id","schema":{"type":"integer"}}],"responses":{"204":{"description":"Deleted"},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/webhooks":{"get":{"tags":["watchlist"],"summary":"Your webhooks","operationId":"getWebhooks","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"id":1,"url":"https://example.com/hook","disabled_at":null}]}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}},"post":{"tags":["watchlist"],"summary":"Receive events by HTTPS","operationId":"postWebhooks","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Replays the first answer for the same key and body within 24 hours","schema":{"type":"string"}}],"responses":{"201":{"description":"OK","content":{"application/json":{"example":{"id":1,"url":"https://example.com/hook","secret":"whsec_..."}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"description":"Deliveries are signed: X-RaceCap-Signature: t=<unix>,v1=hex(HMAC-SHA256(secret, \"<t>.<body>\"))","requestBody":{"required":true,"description":"{\"url\"}","content":{"application/json":{"example":{"url":"https://example.com/hook"}}}}}},"/v1/webhooks/{id}":{"delete":{"tags":["watchlist"],"summary":"Delete a webhook","operationId":"deleteWebhooksId","parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id","schema":{"type":"integer"}}],"responses":{"204":{"description":"Deleted"},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/webhooks/{id}/redeliver":{"post":{"tags":["watchlist"],"summary":"Send events again or resume a disabled webhook","operationId":"postWebhooksIdRedeliver","parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id","schema":{"type":"integer"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Replays the first answer for the same key and body within 24 hours","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"queued":2}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"requestBody":{"required":false,"description":"{\"event_ids\"?: [ids]} — without ids every failed delivery is sent again","content":{"application/json":{"example":{"event_ids":[10,11]}}}}}},"/v1/webhooks/{id}/secret":{"post":{"tags":["watchlist"],"summary":"Replace the signing secret","operationId":"postWebhooksIdSecret","parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id","schema":{"type":"integer"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Replays the first answer for the same key and body within 24 hours","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"id":1,"secret":"whsec_..."}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/v1/webhooks/{id}/test":{"post":{"tags":["watchlist"],"summary":"Send a test call now","operationId":"postWebhooksIdTest","parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id","schema":{"type":"integer"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Replays the first answer for the same key and body within 24 hours","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"event_id":12}}}},"400":{"description":"Bad parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No key or an invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"The plan has no API access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Over a budget; see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}}}}