Endpoint Playground
Returns one OpenDota lookup table as a sorted list of `id`/`name` entries, used to decode ids in match data: game modes and lobby types (with `balanced`), patches (with release `date`), regions, server clusters (`value` is the region id), item and ability ids, permanent buff ids, experience thresholds per level (`value`) countries (`id` is the ISO code), order types (`order_types`, the unit order names) player slot colors (`player_colors`, hex colors), chat wheel phrases (`chat_wheel`, `name` is the label and `text` the message), item rarity colors (`item_colors`, `text` is the hex color), neutral ancient creeps (`ancients`) and skillshot abilities (`skillshots`). `resource` is one of `game_mode`, `lobby_type`, `patch`, `region`, `cluster`, `item_ids`, `ability_ids`, `permanent_buffs`, `xp_level`, `countries`.
29 Oct 2026: 26 entries; 3 fields had a value in every checked item.
Sample value profiles: name: “game_mode_unknown” and 25 other values; balanced: true in 10 of 26.
curl 'https://api.crawlora.net/api/v1/opendota/constants?resource=game_mode' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| resource | string | Yes | game_mode | Lookup table; one of game_mode, lobby_type, patch, region, cluster, item_ids, ability_ids, permanent_buffs, xp_level, countries, order_types, player_colors, chat_wheel, item_colors, ancients, skillshots |
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.opendota.com/api/constants",
"fetched_at": "2026-10-28T10:00:00Z",
"resource": "game_mode",
"count": 2,
"entries": [
{
"id": "1",
"name": "game_mode_all_pick",
"balanced": true
},
{
"id": "2",
"name": "game_mode_captains_mode",
"balanced": true
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.