Download OpenAPI specification:Download
IsThereAnyDeal API provides programmatic access to features found at IsThereAnyDeal.
API is provided in good faith. We trust you won't misuse the API to damage IsThereAnyDeal, its users or its reputation.
All data are provided as-is. We reserve the right to deny you access to the API at any point without notice. If you are not sure about any of the points, please contact us.
Most of the endpoints will be restricted by either API key or OAuth. In order to get neccessary keys, you have to register your app. Upon registration, api keys and OAuth credentials will be generated for you.
For some endpoints you might need explicit approval for use. In such cases, contact us.
We support authorization code flow with PKCE extension.
You can find PKCE step-through tutorial at OAuth 2.0 PKCE Flow
Do not set hard limits for token lengths. Server will return access token as JWT of variable length. To authorize your endpoint access use Authorization header.
At the moment implicit flow is also enabled, but its usage is discouraged and support may be removed in the future
Access to API is rate limited and subject to change. You should get rate-limit info in appropriate headers. Further limits and restrictions may be added if we detect misuse.
If you have questions about limits, contact us.
Some endpoints are marked as unstable or internal. Unstable endpoints are publicly available, but the API may not be completely finalized yet - either the way the endpoint is called or the response may change at any time.
Internal APIs are available only for our own services. They are documented here for the sake of completeness.
You can find source files for this documentation over at GitHub. Feel free to help us improve it.
Webhooks provide a simpler wait to get data from IsThereAnyDeal, if you don't required full API access.
User can register a webhook in their settings and choose which events they wish to listen to. Once the event is triggered on IsThereAnyDeal, a request will be sent to registered webhook.
Each request will include ITAD-Hook-ID
header with a unique ID of a registered webhook
and ITAD-Event-ID
headers which identify the event.
Event you can use to test if the webhook is set up correctly. Can be triggered manually from settings.
User-Agent required | string Value: "ITAD-Webhooks/1.0 (+https://isthereanydeal.com)" |
Content-Type required | string Value: "application/json" |
ITAD-Hook-ID required | string <uuid> ID of the Webhook |
ITAD-Event required | string Event that generated the request Value: "ping" |
Ping even will always send "pong" string in a body
"pong"
This event is trigger on new Waitlist notifications
Event's payload is a list of games and their deals that passed user's notification settings, similar to the Waitlist email notification you may receive.
User-Agent required | string Value: "ITAD-Webhooks/1.0 (+https://isthereanydeal.com)" |
Content-Type required | string Value: "application/json" |
ITAD-Hook-ID required | string <uuid> ID of the Webhook |
ITAD-Event required | string Event that generated the request Value: "notification-waitlist" |
id required | string <uuid> |
slug required | string |
title required | string |
required | string or null (obj.game-type) |
mature required | boolean |
required | Price (object) or null (obj.price-nullable) |
required | Price (object) or null (obj.price-nullable) |
required | Array of objects (Waitlist Notification Deal) |
Payload
[- {
- "id": "018d937e-f835-710c-b95b-928e277b187e",
- "slug": "stardew-valley",
- "title": "Stardew Valley",
- "type": "game",
- "mature": false,
- "historyLow": {
- "amount": 6.99,
- "amountInt": 699,
- "currency": "EUR"
}, - "lastPrice": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "deals": [
- {
- "shop": {
- "id": 35,
- "name": "GOG"
}, - "price": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "regular": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "cut": 0,
- "voucher": null,
- "storeLow": {
- "amount": 7,
- "amountInt": 700,
- "currency": "EUR"
}, - "flag": null,
- "drm": [
- {
- "id": 1000,
- "name": "Drm Free"
}
], - "platforms": [
- {
- "id": 1,
- "name": "Windows"
}, - {
- "id": 2,
- "name": "Mac"
}, - {
- "id": 3,
- "name": "Linux"
}
], - "timestamp": "2024-02-11T01:20:50+01:00",
- "expiry": null,
}
]
}
]
Endpoints for looking up things on IsThereAnyDeal.
Endpoints in /lookup/
namespace will follow this URL structure: /lookup/{lookup-what}/{by-what}/
Endpoints from other namespaces that are related to lookup in any way may also be included in this category.
Lookup IsThereAnyDeal's game IDs by title This is not a full fledged search. Some title preprocessing will happen, but the lookup will only return IDs for titles, that match precisely. Typos or variations in title may not give you expected result.
List of titles
[- "Baldurs Gate 3",
- "Half-Life 2",
- "Unknown game"
]
{- "Baldurs Gate 3": "018d9584-24d6-7010-b82b-df1f0b154cc7",
- "Half-Life 2": "018d937f-012f-73b8-ab2c-898516969e6a",
- "Unknown game": null
}
Lookup IsThereAnyDeal's game IDs by shop's game IDs
shopId required | number |
List of shop's game IDs
[- "app/220"
]
{- "bundle/27508": "018d95bc-fe96-73e6-a9f7-10afc28c0c03",
- "bundle/28796": "018d937f-6671-7056-b419-aac8a69a625e",
- "sub/467072": "018d937f-42c6-70a5-a29b-9d8c2e0f7b84",
- "sub/752476": "018d937f-6128-7151-8d2e-b4a9ad2e1ce8",
- "sub/137730": "018d937f-6ee4-73f5-858c-2fde3407462f",
- "app/137730": null,
- "bundle/33608": "018d937f-7596-706f-b75d-834d76172237"
}
Lookup shop's game IDs by IsThereAnyDeal game IDs
shopId required | number |
List of game IDs
[- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
{- "018d95bc-fe96-73e6-a9f7-10afc28c0c03": [
- "bundle/27508"
], - "018d937f-6671-7056-b419-aac8a69a625e": [
- "bundle/32380",
- "bundle/28796"
], - "018d937f-42c6-70a5-a29b-9d8c2e0f7b84": [
- "app/1336490",
- "sub/467072"
], - "018d937f-6128-7151-8d2e-b4a9ad2e1ce8": [
- "sub/637996",
- "app/1777620",
- "sub/752476"
]
}
Search for games by title
title required | string Find games by name |
results | number [ 1 .. 100 ] Default: 20 Maximum number of results to return |
Europa Universalis IV search
[- {
- "id": "018d937f-07fc-72ed-8517-d8e24cb1eb22",
- "slug": "europa-universalis-iv",
- "title": "Europa Universalis IV",
- "type": "game",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937e-f083-72b5-bfdf-5459a8948636",
- "slug": "europa-universalis-iv-american-dream",
- "title": "Europa Universalis IV: American Dream",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937e-f4e0-71ad-add5-c2642abc7a55",
- "slug": "europa-universalis-iv-rights-of-man",
- "title": "Europa Universalis IV: Rights of Man",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937e-f999-71c8-b0a0-932f481087f9",
- "slug": "expansion-europa-universalis-iv-res-publica",
- "title": "Expansion - Europa Universalis IV: Res Publica",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-27ec-71c5-a8a4-21b0b76b3e77",
- "slug": "europa-universalis-iv-songs-of-yuletide",
- "title": "Europa Universalis IV: Songs of Yuletide",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}
]
Lookup game based on title or Steam appid
title | string Find game by it's name |
appid | number Find game by Steam appid |
Game found
{- "found": true,
- "game": {
- "id": "018d937f-07fc-72ed-8517-d8e24cb1eb22",
- "slug": "europa-universalis-iv",
- "title": "Europa Universalis IV",
- "type": "game",
- "mature": false,
- "assets": {
}
}
}
Search for games by title
title required | string Find games by name |
results | number [ 1 .. 100 ] Default: 20 Maximum number of results to return |
Europa Universalis IV search
[- {
- "id": "018d937f-07fc-72ed-8517-d8e24cb1eb22",
- "slug": "europa-universalis-iv",
- "title": "Europa Universalis IV",
- "type": "game",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937e-f083-72b5-bfdf-5459a8948636",
- "slug": "europa-universalis-iv-american-dream",
- "title": "Europa Universalis IV: American Dream",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937e-f4e0-71ad-add5-c2642abc7a55",
- "slug": "europa-universalis-iv-rights-of-man",
- "title": "Europa Universalis IV: Rights of Man",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937e-f999-71c8-b0a0-932f481087f9",
- "slug": "expansion-europa-universalis-iv-res-publica",
- "title": "Expansion - Europa Universalis IV: Res Publica",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-27ec-71c5-a8a4-21b0b76b3e77",
- "slug": "europa-universalis-iv-songs-of-yuletide",
- "title": "Europa Universalis IV: Songs of Yuletide",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}
]
Lookup game based on title or Steam appid
title | string Find game by it's name |
appid | number Find game by Steam appid |
Game found
{- "found": true,
- "game": {
- "id": "018d937f-07fc-72ed-8517-d8e24cb1eb22",
- "slug": "europa-universalis-iv",
- "title": "Europa Universalis IV",
- "type": "game",
- "mature": false,
- "assets": {
}
}
}
Get basic game information
id required | string <uuid> Game ID |
Europa Universalis IV info
{- "id": "018d937f-07fc-72ed-8517-d8e24cb1eb22",
- "slug": "europa-universalis-iv",
- "title": "Europa Universalis IV",
- "type": "game",
- "mature": false,
- "assets": {
}, - "earlyAccess": false,
- "achievements": true,
- "tradingCards": true,
- "appid": 236850,
- "tags": [
- "Grand Strategy",
- "Strategy",
- "Historical",
- "Simulation",
- "4X"
], - "releaseDate": "2013-08-13",
- "developers": [
- {
- "id": 434,
- "name": "Paradox Development Studio"
}, - {
- "id": 8188,
- "name": "Paradox"
}, - {
- "id": 8765,
- "name": "Paradox Development Studio / Paradox Tinto"
}, - {
- "id": 514,
- "name": "Paradox Tinto"
}
], - "publishers": [
- {
- "id": 84,
- "name": "Paradox Interactive"
}, - {
- "id": 16,
- "name": "Paradox Interactive AB"
}, - {
- "id": 8188,
- "name": "Paradox"
}
], - "reviews": [
- {
- "score": 87,
- "source": "Metascore",
- "count": 31,
}, - {
- "score": 87,
- "source": "Metacritic User Score",
- "count": 1399,
}
], - "stats": {
- "rank": 529,
- "waitlisted": 3368,
- "collected": 18718
}, - "players": {
- "recent": 16763,
- "day": 16967,
- "week": 22451,
- "peak": 46940
},
}
Get games' prices
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
deals | boolean Only load deals, omit prices that have no price cut |
vouchers | boolean Allow vouchers in prices |
capacity | integer >= 0 How many prices to load per each game, 0 or omit for no limit |
shops | Array of integers Example: shops=65,35 List of shop IDs for which you want to load prices |
List of Game IDs for which to load prices
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
Successful response
[- {
- "id": "018d937f-012f-73b8-ab2c-898516969e6a",
- "historyLow": {
- "all": {
- "amount": 0.99,
- "amountInt": 99,
- "currency": "USD"
}, - "y1": {
- "amount": 0.99,
- "amountInt": 99,
- "currency": "USD"
}, - "m3": {
- "amount": 9.99,
- "amountInt": 999,
- "currency": "USD"
}
}, - "deals": [
- {
- "shop": {
- "id": 61,
- "name": "Steam"
}, - "price": {
- "amount": 9.99,
- "amountInt": 999,
- "currency": "USD"
}, - "regular": {
- "amount": 9.99,
- "amountInt": 999,
- "currency": "USD"
}, - "cut": 0,
- "voucher": null,
- "storeLow": {
- "amount": 0.99,
- "amountInt": 99,
- "currency": "USD"
}, - "flag": null,
- "drm": [ ],
- "platforms": [
- {
- "id": 1,
- "name": "Windows"
}, - {
- "id": 2,
- "name": "Mac"
}, - {
- "id": 3,
- "name": "Linux"
}
], - "timestamp": "2024-02-11T01:47:46+01:00",
- "expiry": null,
}
]
}
]
Get basic price overview for selected games.
For each game current best price will be loaded (optionally, only from selected shops), historical low price (among all covered shops).
Furthermore, result will also contain list of currently active bundles, which contain at least one of the queried games.
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
shops | Array of integers Example: shops=65,35 List of shop IDs |
vouchers | boolean Default: true Allow vouchers in prices |
List of Game IDs
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
Successful response
{- "prices": [
- {
- "id": "018d937f-12e9-71ca-a5d5-f31985870694",
- "current": {
- "shop": {
- "id": 61,
- "name": "Steam"
}, - "price": {
- "amount": 31.99,
- "amountInt": 3199,
- "currency": "EUR"
}, - "regular": {
- "amount": 31.99,
- "amountInt": 3199,
- "currency": "EUR"
}, - "cut": 0,
- "voucher": null,
- "flag": null,
- "drm": [ ],
- "platforms": [
- {
- "id": 1,
- "name": "Windows"
}, - {
- "id": 2,
- "name": "Mac"
}, - {
- "id": 3,
- "name": "Linux"
}
], - "timestamp": "2025-02-06T19:21:30+01:00",
- "expiry": null,
}, - "lowest": {
- "shop": {
- "id": 6,
- "name": "Fanatical"
}, - "price": {
- "amount": 22.07,
- "amountInt": 2207,
- "currency": "EUR"
}, - "regular": {
- "amount": 31.99,
- "amountInt": 3199,
- "currency": "EUR"
}, - "cut": 31,
- "timestamp": "2024-07-01T17:15:49+02:00"
}, - "bundled": 1,
}, - {
- "id": "018d937f-6ee4-73f5-858c-2fde3407462f",
- "current": {
- "shop": {
- "id": 67,
- "name": "eTail.Market"
}, - "price": {
- "amount": 34.19,
- "amountInt": 3419,
- "currency": "EUR"
}, - "regular": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "EUR"
}, - "cut": 15,
- "voucher": null,
- "flag": null,
- "drm": [
- {
- "id": 61,
- "name": "Steam"
}
], - "platforms": [ ],
- "timestamp": "2025-02-24T05:11:43+01:00",
- "expiry": null,
}, - "lowest": {
- "shop": {
- "id": 67,
- "name": "eTail.Market"
}, - "price": {
- "amount": 26.48,
- "amountInt": 2648,
- "currency": "EUR"
}, - "regular": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "EUR"
}, - "cut": 34,
- "timestamp": "2024-12-13T12:31:59+01:00"
}, - "bundled": 0,
}
], - "bundles": [
- {
- "id": 11631,
- "title": "Rimworld with all Expansions Bundle",
- "page": {
- "id": 8,
- "name": "Fanatical",
- "shopId": 6
}, - "isMature": false,
- "publish": "2024-03-04T19:00:00+01:00",
- "expiry": "2024-03-22T00:59:46+01:00",
- "counts": {
- "games": 4,
- "media": 1
}, - "tiers": [
- {
- "price": {
- "amount": 87.96,
- "amountInt": 8796,
- "currency": "USD"
}, - "games": [
- {
- "id": "018d937f-12e9-71ca-a5d5-f31985870694",
- "slug": "rimworld",
- "title": "RimWorld",
- "type": "game",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-3e88-718b-b99d-9a45bb69be55",
- "slug": "rimworld-royalty",
- "title": "RimWorld - Royalty",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-5256-73e1-bba6-66fd3f4d9cd7",
- "slug": "rimworld-ideology",
- "title": "RimWorld - Ideology",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-65f0-70d3-83fe-71fac1505a13",
- "slug": "rimworld-biotech",
- "title": "RimWorld - Biotech",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}
]
}
]
}
]
}
Get historically lowest prices
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
List of Game IDs for which to load historical lows
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
Successful response
[- {
- "id": "01849782-1017-7389-8de4-c97c587fd7e3",
- "low": {
- "shop": {
- "id": 47,
- "name": "MacGameStore"
}, - "price": {
- "amount": 3.99,
- "amountInt": 399,
- "currency": "USD"
}, - "regular": {
- "amount": 21.99,
- "amountInt": 2199,
- "currency": "USD"
}, - "cut": 82,
- "timestamp": "2022-11-27T21:33:36+01:00"
}
}, - {
- "id": "01849783-6a26-7147-ab32-71804ca47e8e",
- "low": {
- "shop": {
- "id": 47,
- "name": "MacGameStore"
}, - "price": {
- "amount": 5.99,
- "amountInt": 599,
- "currency": "USD"
}, - "regular": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "USD"
}, - "cut": 85,
- "timestamp": "2022-12-23T03:22:14+01:00"
}
}
]
Get historically lowest prices for individual stores
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
shops | Array of integers Example: shops=65,35 List of shop IDs |
List of Game IDs for which to load store lows
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
Successful response
[- {
- "id": "01849782-1017-7389-8de4-c97c587fd7e3",
- "lows": [
- {
- "shop": {
- "id": 13,
- "name": "DLGamer"
}, - "price": {
- "amount": 6.6,
- "amountInt": 660,
- "currency": "USD"
}, - "regular": {
- "amount": 21.99,
- "amountInt": 2199,
- "currency": "USD"
}, - "cut": 70,
- "timestamp": "2022-11-29T02:14:37+01:00"
}, - {
- "shop": {
- "id": 61,
- "name": "Steam"
}, - "price": {
- "amount": 6.59,
- "amountInt": 659,
- "currency": "USD"
}, - "regular": {
- "amount": 21.99,
- "amountInt": 2199,
- "currency": "USD"
}, - "cut": 70,
- "timestamp": "2022-12-21T00:29:04+01:00"
}
]
}, - {
- "id": "01849783-6a26-7147-ab32-71804ca47e8e",
- "lows": [
- {
- "shop": {
- "id": 13,
- "name": "DLGamer"
}, - "price": {
- "amount": 10,
- "amountInt": 1000,
- "currency": "USD"
}, - "regular": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "USD"
}, - "cut": 75,
- "timestamp": "2022-11-29T02:14:36+01:00"
}, - {
- "shop": {
- "id": 61,
- "name": "Steam"
}, - "price": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "USD"
}, - "regular": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "USD"
}, - "cut": 0,
- "timestamp": "2022-12-14T00:28:40+01:00"
}
]
}
]
Get log of historical prices
id required | string <uuid> Game ID |
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
shops | Array of integers Example: shops=65,35 List of shop IDs |
since | string <date-time> Load only price changes after this date. |
Successful response
[- {
- "timestamp": "2022-12-27T11:21:08+01:00",
- "shop": {
- "id": 61,
- "name": "Steam"
}, - "deal": {
- "price": {
- "amount": 9.99,
- "amountInt": 999,
- "currency": "EUR"
}, - "regular": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "EUR"
}, - "cut": 75
}
}, - {
- "timestamp": "2022-12-14T00:12:29+01:00",
- "shop": {
- "id": 61,
- "name": "Steam"
}, - "deal": {
- "price": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "EUR"
}, - "regular": {
- "amount": 39.99,
- "amountInt": 3999,
- "currency": "EUR"
}, - "cut": 0
}
}
]
Get all bundles which contain the game
id required | string <uuid> Game ID |
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
expired | boolean Include expired bundles |
Successful response
[- {
- "id": 11631,
- "title": "Rimworld with all Expansions Bundle",
- "page": {
- "id": 8,
- "name": "Fanatical",
- "shopId": 6
}, - "isMature": false,
- "publish": "2024-03-04T19:00:00+01:00",
- "expiry": "2024-03-22T00:59:46+01:00",
- "counts": {
- "games": 4,
- "media": 1
}, - "tiers": [
- {
- "price": {
- "amount": 87.96,
- "amountInt": 8796,
- "currency": "USD"
}, - "games": [
- {
- "id": "018d937f-12e9-71ca-a5d5-f31985870694",
- "slug": "rimworld",
- "title": "RimWorld",
- "type": "game",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-3e88-718b-b99d-9a45bb69be55",
- "slug": "rimworld-royalty",
- "title": "RimWorld - Royalty",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-5256-73e1-bba6-66fd3f4d9cd7",
- "slug": "rimworld-ideology",
- "title": "RimWorld - Ideology",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}, - {
- "id": "018d937f-65f0-70d3-83fe-71fac1505a13",
- "slug": "rimworld-biotech",
- "title": "RimWorld - Biotech",
- "type": "dlc",
- "mature": false,
- "assets": {
}
}
]
}
]
}
]
Get current deals. Follows same rules as deals list displayed on the website, which means that you will not get one game more than once in the list.
For each game, the best price is displayed, ignoring stores that currently don't have game on sale, even if they currently have a better price.
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
offset | integer >= 0 Default: 0 Deals list offset |
limit | integer [ 1 .. 200 ] Default: 20 How many deals to return |
sort | string Examples:
Sorting values, same as in deals list on the website |
nondeals | boolean Default: false Load non-sale prices |
mature | boolean Default: false Load deals for mature prices |
shops | Array of numbers Examples:
List of shop IDs separated by comma |
filter | string Filter string |
{- "nextOffset": 3,
- "hasMore": true,
- "list": [
- {
- "id": "018d937e-e9ce-718b-9715-111f50820ed4",
- "slug": "lego-marvels-avengers-season-pass",
- "title": "LEGO Marvel's Avengers Season Pass",
- "type": "dlc",
- "mature": false,
- "assets": {
}, - "deal": {
- "shop": {
- "id": 50,
- "name": "Nuuvem"
}, - "price": {
- "amount": 1.49,
- "amountInt": 149,
- "currency": "BRL"
}, - "regular": {
- "amount": 29.9,
- "amountInt": 2990,
- "currency": "BRL"
}, - "cut": 95,
- "voucher": null,
- "storeLow": {
- "amount": 1.49,
- "amountInt": 149,
- "currency": "BRL"
}, - "historyLow": {
- "amount": 1.49,
- "amountInt": 149,
- "currency": "BRL"
}, - "historyLow_1y": {
- "amount": 1.49,
- "amountInt": 149,
- "currency": "BRL"
}, - "historyLow_3m": {
- "amount": 1.49,
- "amountInt": 149,
- "currency": "BRL"
}, - "flag": "H",
- "drm": [
- {
- "id": 61,
- "name": "Steam"
}
], - "platforms": [
- {
- "id": 1,
- "name": "Windows"
}
], - "timestamp": "2024-10-01T15:25:52+02:00",
- "expiry": "2024-11-01T03:59:59+01:00",
}
}, - {
- "id": "018d937e-e9ec-7103-97a0-732d4301eb72",
- "slug": "shift-quantum",
- "title": "Shift Quantum",
- "type": "game",
- "mature": false,
- "assets": {
}, - "deal": {
- "shop": {
- "id": 50,
- "name": "Nuuvem"
}, - "price": {
- "amount": 11.4,
- "amountInt": 1140,
- "currency": "BRL"
}, - "regular": {
- "amount": 37.99,
- "amountInt": 3799,
- "currency": "BRL"
}, - "cut": 70,
- "voucher": null,
- "storeLow": {
- "amount": 9.49,
- "amountInt": 949,
- "currency": "BRL"
}, - "historyLow": {
- "amount": 7.59,
- "amountInt": 759,
- "currency": "BRL"
}, - "historyLow_1y": {
- "amount": 9.49,
- "amountInt": 949,
- "currency": "BRL"
}, - "historyLow_3m": {
- "amount": 9.49,
- "amountInt": 949,
- "currency": "BRL"
}, - "flag": null,
- "drm": [
- {
- "id": 61,
- "name": "Steam"
}
], - "platforms": [
- {
- "id": 1,
- "name": "Windows"
}
], - "timestamp": "2024-12-05T04:26:01+01:00",
- "expiry": "2024-12-19T03:59:59+01:00",
}
}, - {
- "id": "018d937e-f7f5-70ea-a1dd-e1901a199f3d",
- "slug": "grand-theft-auto-v-cesp-and-great-white-shark-card-bundle",
- "title": "Grand Theft Auto V - CESP + Great White Shark Card Bundle",
- "type": null,
- "mature": false,
- "assets": {
}, - "deal": {
- "shop": {
- "id": 50,
- "name": "Nuuvem"
}, - "price": {
- "amount": 49.23,
- "amountInt": 4923,
- "currency": "BRL"
}, - "regular": {
- "amount": 109.41,
- "amountInt": 10941,
- "currency": "BRL"
}, - "cut": 55,
- "voucher": null,
- "storeLow": {
- "amount": 38.39,
- "amountInt": 3839,
- "currency": "BRL"
}, - "historyLow": {
- "amount": 38.39,
- "amountInt": 3839,
- "currency": "BRL"
}, - "historyLow_1y": {
- "amount": 49.23,
- "amountInt": 4923,
- "currency": "BRL"
}, - "historyLow_3m": {
- "amount": 49.23,
- "amountInt": 4923,
- "currency": "BRL"
}, - "flag": null,
- "drm": [
- {
- "id": 61,
- "name": "Steam"
}
], - "platforms": [
- {
- "id": 1,
- "name": "Windows"
}
], - "timestamp": "2024-12-10T05:15:41+01:00",
- "expiry": "2024-12-14T03:29:00+01:00",
}
}
]
}
Get list of subscriptions the game is listed in.
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
List of Game IDs
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
Successful response
[- {
- "id": "018d937f-24b7-731c-a789-8307ae059efa",
- "subs": [
- {
- "id": 1,
- "name": "Prime Gaming",
- "leaving": "2025-02-26T18:00:00+00:00"
}
]
}, - {
- "id": "018d937f-700e-7161-9c8d-5423af1b7c99",
- "subs": [
- {
- "id": 6,
- "name": "Game Pass",
- "leaving": null
}
]
}
]
Successful response
[- {
- "id": "018d937e-e9e5-72fa-a1dc-e7e090b64d2f",
- "slug": "dwarven-skykeep",
- "title": "Dwarven Skykeep",
- "type": "game",
- "assets": {
}, - "mature": false,
- "added": "2023-02-01T21:04:21+01:00"
}, - {
- "id": "018d937e-e9f4-71bb-9413-3b25175df416",
- "slug": "orcish-inn",
- "title": "Orcish Inn",
- "type": "game",
- "assets": {
}, - "mature": false,
- "added": "2023-02-01T21:04:21+01:00"
}, - {
- "id": "018d937e-e9f9-734c-8413-5a447e993a8c",
- "slug": "take-on-mars",
- "title": "Take On Mars",
- "type": "game",
- "assets": { },
- "mature": false,
- "added": "2019-01-13T02:41:06+01:00"
}, - {
- "id": "018d937e-ea40-7125-bab3-feb2fba446a1",
- "slug": "surviving-mars",
- "title": "Surviving Mars",
- "type": "game",
- "assets": {
}, - "mature": false,
- "added": "2019-01-13T02:41:06+01:00"
}
]
Add games to user's Waitlist
List of Game IDs
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
{- "status_code": 0,
- "reason_phrase": "string"
}
Delete games from user's Waitlist
List of Game IDs
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
{- "status_code": 0,
- "reason_phrase": "string"
}
Get Waitlist statistics for a game
Note: stats do not take into consideration users' regions. If they have set their price limit to be a historical low, stats will be computed for all users as if they were in the region you specify
id required | string <uuid> Game ID |
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
bucket_price | integer >= 0 Default: 5 Price bucket size |
bucket_cut | integer >= 0 Default: 5 Cut bucket size |
{- "count": 0,
- "price": {
- "currency": "str",
- "any": 0,
- "average": 0,
- "buckets": [
- {
- "bucket": 0,
- "count": 0,
- "percentile": 100
}
]
}, - "cut": {
- "average": 0,
- "buckets": [
- {
- "bucket": 0,
- "count": 0,
- "percentile": 100
}
]
}
}
Get list of most Waitlisted games
offset | integer >= 0 Default: 0 |
limit | integer [ 1 .. 500 ] Default: 20 |
[- {
- "position": 1,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "slug": "string",
- "title": "string",
- "type": "game",
- "mature": true,
- "count": 0
}
]
This event is trigger on new Waitlist notifications
Event's payload is a list of games and their deals that passed user's notification settings, similar to the Waitlist email notification you may receive.
User-Agent required | string Value: "ITAD-Webhooks/1.0 (+https://isthereanydeal.com)" |
Content-Type required | string Value: "application/json" |
ITAD-Hook-ID required | string <uuid> ID of the Webhook |
ITAD-Event required | string Event that generated the request Value: "notification-waitlist" |
id required | string <uuid> |
slug required | string |
title required | string |
required | string or null (obj.game-type) |
mature required | boolean |
required | Price (object) or null (obj.price-nullable) |
required | Price (object) or null (obj.price-nullable) |
required | Array of objects (Waitlist Notification Deal) |
Payload
[- {
- "id": "018d937e-f835-710c-b95b-928e277b187e",
- "slug": "stardew-valley",
- "title": "Stardew Valley",
- "type": "game",
- "mature": false,
- "historyLow": {
- "amount": 6.99,
- "amountInt": 699,
- "currency": "EUR"
}, - "lastPrice": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "deals": [
- {
- "shop": {
- "id": 35,
- "name": "GOG"
}, - "price": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "regular": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "cut": 0,
- "voucher": null,
- "storeLow": {
- "amount": 7,
- "amountInt": 700,
- "currency": "EUR"
}, - "flag": null,
- "drm": [
- {
- "id": 1000,
- "name": "Drm Free"
}
], - "platforms": [
- {
- "id": 1,
- "name": "Windows"
}, - {
- "id": 2,
- "name": "Mac"
}, - {
- "id": 3,
- "name": "Linux"
}
], - "timestamp": "2024-02-11T01:20:50+01:00",
- "expiry": null,
}
]
}
]
Get details of Waitlist notification
id required | string <uuid> Notification ID |
Successful response
{- "id": "01921bab-b582-73bc-8473-9f125837107b",
- "timestamp": "2024-09-24T02:43:04+02:00",
- "read": "2024-10-06T16:06:47+02:00",
- "games": [
- {
- "id": "018d937e-f835-710c-b95b-928e277b187e",
- "slug": "stardew-valley",
- "title": "Stardew Valley",
- "type": "game",
- "mature": false,
- "historyLow": {
- "amount": 6.99,
- "amountInt": 699,
- "currency": "EUR"
}, - "lastPrice": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "deals": [
- {
- "shop": {
- "id": 35,
- "name": "GOG"
}, - "price": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "regular": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "cut": 0,
- "voucher": null,
- "storeLow": {
- "amount": 7,
- "amountInt": 700,
- "currency": "EUR"
}, - "flag": null,
- "drm": [
- {
- "id": 1000,
- "name": "Drm Free"
}
], - "platforms": [
- {
- "id": 1,
- "name": "Windows"
}, - {
- "id": 2,
- "name": "Mac"
}, - {
- "id": 3,
- "name": "Linux"
}
], - "timestamp": "2024-02-11T01:20:50+01:00",
- "expiry": null,
}
]
}
]
}
Successful response
[- {
- "id": "018d937f-20d1-7349-9963-b278a98f2fb0",
- "slug": "abyss-odyssey",
- "title": "Abyss Odyssey",
- "type": "game",
- "assets": { },
- "mature": false,
- "group": 0,
- "added": "2015-10-02T03:00:04+02:00"
}, - {
- "id": "018d937f-11d2-70c4-9b73-0a6cf40fe771",
- "slug": "abzu",
- "title": "ABZU",
- "type": "game",
- "assets": {
}, - "mature": false,
- "group": 38437,
- "added": "2015-10-02T03:00:04+02:00"
}
]
Add games to user's Collection
List of Game IDs
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
{- "status_code": 0,
- "reason_phrase": "string"
}
Delete games from user's Collection
List of Game IDs
[- "01849783-6a26-7147-ab32-71804ca47e8e",
- "01849782-1017-7389-8de4-c97c587fd7e3"
]
{- "status_code": 0,
- "reason_phrase": "string"
}
Get all copies user has in their Collection. Copies are returned as a simple list.
It is not necessary to have copy for each game in Collection, so you should not rely on this endpoint if you need to know about all games in user's Collection.
Successful response
[- {
- "id": 145742693,
- "game": {
- "id": "018d937e-e9ab-70f4-bd05-1db7a138eb39"
}, - "shop": {
- "id": 61,
- "name": "Steam"
}, - "redeemed": true,
- "price": {
- "amount": 15,
- "amountInt": 1500,
- "currency": "EUR"
}, - "note": "My note for this copy",
- "tags": [
- {
- "id": 21,
- "tag": "tag 1"
}, - {
- "id": 22,
- "tag": "tag 2"
}
], - "added": "2024-02-16T21:16:17+01:00"
}, - {
- "id": 9128925,
- "game": {
- "id": "018d937e-e9ac-7156-83a6-7d27fd9f857a"
}, - "shop": null,
- "redeemed": true,
- "price": null,
- "note": null,
- "tags": [ ],
- "added": "2015-10-02T03:00:04+02:00"
}
]
Add new copies. If the game is not already in a Collection, it will be added. Similarly, new tags will also be created.
Same copies may exist multiple times for a single game, ITAD does not check for duplicates.
This operation is atomic, either all copies are added or none.
Copies to add
gameId required | string <uuid> |
redeemed required | boolean |
number or null | |
object or null | |
string or null | |
Array of strings or null |
[- {
- "gameId": "018d937e-e9ab-70f4-bd05-1db7a138eb39",
- "redeemed": false,
- "shop": 61,
- "price": {
- "amount": 33.33,
- "currency": "EUR"
}, - "note": "Api note",
- "tags": [
- "From Api",
- "Second tag"
]
}, - {
- "gameId": "018d937e-e9ab-70f4-bd05-1db7a138eb39",
- "redeemed": false,
- "shop": 4,
- "price": null,
- "note": null,
- "tags": [
- "From Api"
]
}
]
{- "status_code": 400,
- "reason_phrase": "Bad Request",
- "details": [
- 0,
- {
- "propety": "Missing data for 'property'"
}
]
}
Update one or more copies.
You can issue partial updates on copy, only properties that are included for a copy will be updated.
This operation is atomic, either all copies are updated or none.
id required | number |
redeemed | boolean |
number or null | |
object or null | |
string or null | |
Array of strings or null |
[- {
- "id": 145742693,
- "shop": 61,
- "price": {
- "amount": 12.34,
- "currency": "USD"
}
}
]
{- "status_code": 400,
- "reason_phrase": "Bad Request",
- "details": [
- 0,
- {
- "propety": "Missing data for 'property'"
}
]
}
Delete Collection copies.
Copies that do not exist or don't belong to user will be silently ignored.
Operation is atomic. Either all copies are deleted or none.
List of copy IDs
[- 123,
- 124,
- 125
]
{- "status_code": 0,
- "reason_phrase": "string"
}
Collection category endpoints. Category and group may be used interchangably. Default category has ID 0.
Get all Collection categories, both the user created ones and default one. Default category has id 0 and will always be listed last. User set order of categories is respected in the response.
Successful response
[- {
- "id": 3857,
- "title": "Favorites",
- "public": true
}, - {
- "id": 5662,
- "title": "Playing now",
- "public": true
}, - {
- "id": 5663,
- "title": "Not yet played",
- "public": true
}, - {
- "id": 0,
- "title": "Default Category",
- "public": false
}
]
Create Collection category. Categories with same name may exist.
Successful response will return the created category.
Category to create
title required | string |
public required | boolean |
{- "title": "New Collection Category",
- "public": true
}
{- "id": 5669,
- "title": "New Collection Category",
- "public": true
}
Update one or more categories.
For each category that you are going to update, only id
is required. Fields that you do not want to update may be
set to null
or omitted fully. Categories that do not exist or user does not own will be ignored.
Default category (id: 0
) may have only public
property updated. Other properties will be ignored.
This operation is atomic, either all categories update or none. Successful response is the full category list, including categories that were not updated.
id required | integer |
string or null | |
boolean or null | |
integer or null |
[- {
- "id": 123,
- "title": "Full update",
- "public": false,
- "position": "1\""
}, - {
- "id": 0,
- "public": false
}
]
Successful response
[- {
- "id": 3857,
- "title": "Favorites",
- "public": true
}, - {
- "id": 5662,
- "title": "Playing now",
- "public": true
}, - {
- "id": 5663,
- "title": "Not yet played",
- "public": true
}, - {
- "id": 0,
- "title": "Default Category",
- "public": false
}
]
Delete Collection categories.
Default category or categories that do not exist or user does not own will be silently ignored.
List of category IDs
[- 123,
- 124,
- 125
]
{- "status_code": 0,
- "reason_phrase": "string"
}
Get list of most Collected games
offset | integer >= 0 Default: 0 |
limit | integer [ 1 .. 500 ] Default: 20 |
[- {
- "position": 1,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "slug": "string",
- "title": "string",
- "type": "game",
- "mature": true,
- "count": 0
}
]
Get Waitlist statistics for a game
Note: stats do not take into consideration users' regions. If they have set their price limit to be a historical low, stats will be computed for all users as if they were in the region you specify
id required | string <uuid> Game ID |
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
bucket_price | integer >= 0 Default: 5 Price bucket size |
bucket_cut | integer >= 0 Default: 5 Cut bucket size |
{- "count": 0,
- "price": {
- "currency": "str",
- "any": 0,
- "average": 0,
- "buckets": [
- {
- "bucket": 0,
- "count": 0,
- "percentile": 100
}
]
}, - "cut": {
- "average": 0,
- "buckets": [
- {
- "bucket": 0,
- "count": 0,
- "percentile": 100
}
]
}
}
Get list of most Waitlisted games
offset | integer >= 0 Default: 0 |
limit | integer [ 1 .. 500 ] Default: 20 |
[- {
- "position": 1,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "slug": "string",
- "title": "string",
- "type": "game",
- "mature": true,
- "count": 0
}
]
Get list of most Collected games
offset | integer >= 0 Default: 0 |
limit | integer [ 1 .. 500 ] Default: 20 |
[- {
- "position": 1,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "slug": "string",
- "title": "string",
- "type": "game",
- "mature": true,
- "count": 0
}
]
Get list of most popular games. Popularity for each game is computed as Waitlisted count + Collected count.
offset | integer >= 0 Default: 0 |
limit | integer [ 1 .. 500 ] Default: 20 |
[- {
- "position": 1,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "slug": "string",
- "title": "string",
- "type": "game",
- "mature": true,
- "count": 0
}
]
Add or edit game notes. This operation is atomic and idempotent.
List of notes
gid required | string <uuid> Game ID |
note required | string Non-empty string |
[- {
- "gid": "02be4353-7111-4f22-ba28-5d5c245d174c",
- "note": "string"
}
]
{- "status_code": 0,
- "reason_phrase": "string"
}
Delete game notes. This operation is atomic.
List of game IDs
[- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
{- "status_code": 0,
- "reason_phrase": "string"
}
You can create a link between your app's users' accounts and ITAD, and use that link to sync games into Waitlist and Collection in the similar fashion as natively supported profiles on IsThereAnyDeal.
Profile is an object identifying remote account. You need linked profile to use sync endpoints.
After successful link you will get profile token, which is used in subsequent profile operations,
usually as an ITAD-Profile
header.
Linking is idempotent, if you lose your token, or you need it in different instance of your app, you can link the same profile again.
Profile to link
accountId required | string Per-app unique ID. This can be any string, but it needs to uniquely identify the account within your app. |
accountName required | string Name of the account. Does not need to be unique, it's meant to be a human-friendly name. |
{- "accountId": "acc7896132977",
- "accountName": "My Account"
}
{- "token": "string"
}
Sync endpoints provide easier way to add or remove games from Waitlist and Collection.
Sync via API works in the same way as natively supported sync of remote profiles, but instead of ITAD pulling data, you will have to push data. Behavior of sync'd games is the same as for natively supported profiles.
It is useful when you can create a list of all games for user, and don't want to handle game identification, deduplication, additions and removals via regular API endpoints.
Sync Waitlist with IsThereAnyDeal. User can set category for your profile and default notification rules in their settings, same as with natively supported profiles.
ITAD-Profile required | string Profile token |
Games to sync with IsThereAnyDeal
shop required | number Shop ID |
id required | string ID can be any string that will identify the game. It should be stable and not change in the future. ID can also used to identify the game, if you use same IDs that we use for tracking shops. If a game is not identified with shop and id, we will use title. For Steam we use full ids, i.e. app/{id}, sub/{id} or bundle/{id}. |
title required | string Title of the game. |
[- {
- "shop": 61,
- "id": "my-waitlist-id-1",
- "title": "Creatures of Ava: Deluxe Edition"
}, - {
- "shop": 4,
- "id": "my-waitlist-id-3",
- "title": ">observer_"
}
]
{- "total": 0,
- "added": 0,
- "removed": 0
}
Sync Collection with IsThereAnyDeal. User can set category for your profile in their settings, same as with natively supported profiles.
Games are synced as redeemed copies. If there already is a redemeed copy with the same shop in user's Collection, new copy will not be added.
ITAD-Profile required | string Profile token |
Games to sync with IsThereAnyDeal
shop required | number Shop ID |
id required | string ID can be any string that will identify the game. It should be stable and not change in the future. ID can also used to identify the game, if you use same IDs that we use for tracking shops. If a game is not identified with shop and id, we will use title. For Steam we use full ids, i.e. app/{id}, sub/{id} or bundle/{id}. |
title required | string Title of the game. |
number or null Play time in minutes | |
string or null |
[- {
- "shop": 61,
- "id": "my-tracking-id-2",
- "title": "Creatures of Ava: Deluxe Edition",
- "playtime": 100,
- "lastPlayed": "2024-08-26T22:04:08+01:00"
}, - {
- "shop": 4,
- "id": "my-tracking-id-3",
- "title": ">observer_"
}
]
{- "total": 0,
- "added": 0,
- "removed": 0
}
Successful response
[- {
- "id": "01921bab-b582-73bc-8473-9f125837107b",
- "type": "waitlist",
- "title": "Stardew Valley and 3 more games",
- "timestamp": "2024-09-24T02:43:04+02:00",
- "read": "2024-10-06T16:06:47+02:00"
}, - {
- "id": "019216c1-0c76-7373-98f0-a1790c6e65f7",
- "type": "waitlist",
- "title": "Potion Permit and 42 more games",
- "timestamp": "2024-09-24T02:43:04+02:00",
- "read": "2024-10-06T16:06:47+02:00"
}, - {
- "id": "019216c1-0c74-704e-b590-cce7a5fc8ec6",
- "type": "waitlist",
- "title": "Dwarven Skykeep and 74 more games",
- "timestamp": "2024-09-24T02:43:04+02:00",
- "read": "2024-10-06T16:06:47+02:00"
}
]
Get details of Waitlist notification
id required | string <uuid> Notification ID |
Successful response
{- "id": "01921bab-b582-73bc-8473-9f125837107b",
- "timestamp": "2024-09-24T02:43:04+02:00",
- "read": "2024-10-06T16:06:47+02:00",
- "games": [
- {
- "id": "018d937e-f835-710c-b95b-928e277b187e",
- "slug": "stardew-valley",
- "title": "Stardew Valley",
- "type": "game",
- "mature": false,
- "historyLow": {
- "amount": 6.99,
- "amountInt": 699,
- "currency": "EUR"
}, - "lastPrice": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "deals": [
- {
- "shop": {
- "id": 35,
- "name": "GOG"
}, - "price": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "regular": {
- "amount": 13.99,
- "amountInt": 1399,
- "currency": "EUR"
}, - "cut": 0,
- "voucher": null,
- "storeLow": {
- "amount": 7,
- "amountInt": 700,
- "currency": "EUR"
}, - "flag": null,
- "drm": [
- {
- "id": 1000,
- "name": "Drm Free"
}
], - "platforms": [
- {
- "id": 1,
- "name": "Windows"
}, - {
- "id": 2,
- "name": "Mac"
}, - {
- "id": 3,
- "name": "Linux"
}
], - "timestamp": "2024-02-11T01:20:50+01:00",
- "expiry": null,
}
]
}
]
}
Return information about shops
country | string = 2 characters Default: "US" Two letter country code (ISO 3166-1 alpha-2) |
[- {
- "id": 19,
- "title": "2game",
- "deals": 3170,
- "games": 3785,
- "update": "2023-06-06T21:51:13+02:00"
}, - {
- "id": 2,
- "title": "AllYouPlay",
- "deals": 435,
- "games": 4926,
- "update": "2023-06-06T22:10:25+02:00"
}, - {
- "id": 3,
- "title": "Amazon",
- "deals": 0,
- "games": 0,
- "update": null
}
]
Endpoints that are not yet stable. They may be in development, experimental, or we are not sure about their current definition.
Endpoints available for our own services. They are documented here for the sake of completeness.