WoW: Forever API notes

What the Blizzard Battle.net API returns for World of Warcraft: Forever. Last checked 2026-10-31 22:45 UTC.

Blizzard hasn't announced or documented a Forever API. These notes come from probing the public API with a normal client credentials token, and the account profile with a user token from my own Battle.net login. Things can change or disappear without notice, especially around launch on November 4.

Short version

dynamic-forever-{region}Open since Oct 30, 23:46 GMT on eu, us and tw. Regions and realms work.
static-1.60.1_70399-forever-{region}Open. Classes, races, items, achievements, mounts, talents and more. The plain static-forever name is a 403.
profile-forever-{region}The account profile works with a user token and shows first name and surname. Public character lookups are still 404.

So right now you can list the realms, read most of the game data, and see your own characters through the account profile. Looking up characters and guilds by name doesn't work yet.

Making a request

Nothing special. Get an app token with the client credentials flow and pass the Forever namespace. The hosts are the normal regional ones.

curl -u "$CLIENT_ID:$CLIENT_SECRET" -d grant_type=client_credentials https://oauth.battle.net/token

curl -H "Authorization: Bearer $TOKEN" \
  "https://eu.api.blizzard.com/data/wow/realm/index?namespace=dynamic-forever-eu&locale=en_GB"

Namespaces follow the usual pattern: dynamic-forever-eu, dynamic-forever-us, profile-forever-eu and so on. The static one is the exception, it carries a build number: static-1.60.1_70399-forever-eu (same for us and tw). 70399 is not the client build (70707), so expect it to change with patches. The account profile links to it, which is the easiest way to find the current one. The response header battlenet-namespace echoes the one you used.

Other headers worth knowing: battlenet-schema names the document type (realm, revision 1), and cache-control: max-age=86400 means a response may be cached for a day. Every document currently has the same last-modified: Oct 30, 23:46:51 GMT. Nothing has changed since.

403 or 404?

This is how you tell what's open. On an existing route, a namespace that doesn't exist (try dynamic-bogus-eu) gives 403. A namespace that exists but has nothing at that path gives 404. That's how we know profile-forever is live: an unknown character returns 404, the same request with a made up namespace returns 403.

One catch: a route that doesn't exist at all is a 404 in any namespace, closed or not. /data/wow/hardcore/index on static-forever is a 404, not a 403.

The static namespace only answers to its exact versioned name. static-forever-eu and static-1.60.1_70707-forever-eu (the client build) are both 403.

Regions

HostRegion idNameTagpatch_string
us.api.blizzard.com91CAMWOW North AmericaUS1.60.1
eu.api.blizzard.com93CAMWOW EuropeEU1.60.1
tw.api.blizzard.com94CAMWOW TaiwanTW1.60.1
kr.api.blizzard.com403 Not open yet, also with locale=ko_KR. 92 is probably reserved for it.
gateway.battlenet.com.cn401 China needs its own developer account, so we couldn't check.

CAMWOW looks like Blizzard's internal name for Forever. It's in every region and realm name.

Realms and rulesets

Forever doesn't show realms to players, you pick a ruleset instead. Behind that are normal realms, and the API lists them. The ruleset is the realm's type:

type.typetype.nameRuleset in gameEUUS / AUTW
NORMALNormalNormal (PvE)891
PVPPvPPvP891
RPRoleplayingRP230
PVP_RPRoleplaying PvPRP-PvP240

Counts are game realms only. The lists also contain service entries (Web, GMSS, Partner, Account, Log, CSI) that are clearly not for players. They're greyed out below. EU realms report enGB and Europe/Paris, US and AU realms enUS and America/Chicago, TW realms zhTW and Asia/Taipei.

The realm document looks like this:

GET /data/wow/realm/camwow-eu4-realm-3-pve?namespace=dynamic-forever-eu

{
  "id": 6937,
  "region": { "name": "CAMWOW Europe", "id": 93 },
  "connected_realm": { "href": ".../data/wow/connected-realm/6937?namespace=dynamic-forever-eu" },
  "name": "CAMWOW EU4 Realm 3 PvE",
  "category": "English",
  "locale": "enGB",
  "timezone": "Europe/Paris",
  "type": { "type": "NORMAL", "name": "Normal" },
  "is_tournament": false,
  "slug": "camwow-eu4-realm-3-pve"
}
EU realms (26)
IdNameSlugRulesetTimezone
6841CAMWOW EU4 Realm 1 PvEcamwow-eu4-realm-1-pveNormal (PvE)Europe/Paris
6842CAMWOW EU4 Realm 2 PvPcamwow-eu4-realm-2-pvpPvPEurope/Paris
6853CAMWOW EU4 Webcamwow-eu4-webserviceEurope/Paris
6855CAMWOW EU5 Realm 1 PvEcamwow-eu5-realm-1-pveNormal (PvE)Europe/Paris
6856CAMWOW EU5 Realm 2 PvPcamwow-eu5-realm-2-pvpPvPEurope/Paris
6860CAMWOW EU5 Webcamwow-eu5-webserviceEurope/Paris
6869CAMWOW EU4 GMSS 1camwow-eu4-gmss-1serviceEurope/Paris
6870CAMWOW EU4 GMSS 2camwow-eu4-gmss-2serviceEurope/Paris
6891CAMWOW EU4 Partnercamwow-eu4-partnerserviceEurope/Paris
6937CAMWOW EU4 Realm 3 PvEcamwow-eu4-realm-3-pveNormal (PvE)Europe/Paris
6938CAMWOW EU4 Realm 4 PvPcamwow-eu4-realm-4-pvpPvPEurope/Paris
6939CAMWOW EU4 Realm 5 PvEcamwow-eu4-realm-5-pveNormal (PvE)Europe/Paris
6940CAMWOW EU4 Realm 6 PvPcamwow-eu4-realm-6-pvpPvPEurope/Paris
6941CAMWOW EU4 Realm 7 PvEcamwow-eu4-realm-7-pveNormal (PvE)Europe/Paris
6942CAMWOW EU4 Realm 8 PvPcamwow-eu4-realm-8-pvpPvPEurope/Paris
6943CAMWOW EU4 Realm 9 RP PvPcamwow-eu4-realm-9-rp-pvpRP-PvPEurope/Paris
6944CAMWOW EU4 Realm 10 RPcamwow-eu4-realm-10-rpRPEurope/Paris
6945CAMWOW EU5 Realm 3 PvEcamwow-eu5-realm-3-pveNormal (PvE)Europe/Paris
6946CAMWOW EU5 Realm 4 PvPcamwow-eu5-realm-4-pvpPvPEurope/Paris
6947CAMWOW EU5 Realm 5 PvEcamwow-eu5-realm-5-pveNormal (PvE)Europe/Paris
6948CAMWOW EU5 Realm 6 PvPcamwow-eu5-realm-6-pvpPvPEurope/Paris
6949CAMWOW EU5 Realm 7 PvEcamwow-eu5-realm-7-pveNormal (PvE)Europe/Paris
6950CAMWOW EU5 Realm 8 PvPcamwow-eu5-realm-8-pvpPvPEurope/Paris
6951CAMWOW EU5 Realm 9 RP PvPcamwow-eu5-realm-9-rp-pvpRP-PvPEurope/Paris
6952CAMWOW EU5 Realm 10 RPcamwow-eu5-realm-10-rpRPEurope/Paris
7013CAMWOW EU6 Webcamwow-eu6-webserviceEurope/Paris
US and AU realms (51)
IdNameSlugRulesetTimezone
6794CAMWOW US1 Realm 1 PvEcamwow-us1-realm-1-pveNormal (PvE)America/Chicago
6796CAMWOW US2 Realm 1 PvEcamwow-us2-realm-1-pveNormal (PvE)America/Chicago
6797CAMWOW AU1 Realm 1 PvEcamwow-au1-realm-1-pveNormal (PvE)America/Chicago
6798CAMWOW US1 Realm 2 PvPcamwow-us1-realm-2-pvpPvPAmerica/Chicago
6800CAMWOW US2 Realm 2 PvPcamwow-us2-realm-2-pvpPvPAmerica/Chicago
6801CAMWOW AU1 Realm 2 PvPcamwow-au1-realm-2-pvpPvPAmerica/Chicago
6805CAMWOW US2 CSI 80camwow-us2-csi-80serviceAmerica/Chicago
6807CAMWOW US2 CSI 81camwow-us2-csi-81serviceAmerica/Chicago
6811CAMWOW US2 Accountcamwow-us2-accountserviceAmerica/Chicago
6813CAMWOW US1 Webcamwow-us1-webserviceAmerica/Chicago
6815CAMWOW US2 Webcamwow-us2-webserviceAmerica/Chicago
6819CAMWOW US2 Logcamwow-us2-logserviceAmerica/Chicago
6829CAMWOW US2 CSI 82camwow-us2-csi-82serviceAmerica/Chicago
6830CAMWOW US2 CSI 83camwow-us2-csi-83serviceAmerica/Chicago
6831CAMWOW US2 CSI 84camwow-us2-csi-84serviceAmerica/Chicago
6832CAMWOW US2 CSI 85camwow-us2-csi-85serviceAmerica/Chicago
6833CAMWOW US2 CSI 86camwow-us2-csi-86serviceAmerica/Chicago
6834CAMWOW US2 CSI 87camwow-us2-csi-87serviceAmerica/Chicago
6835CAMWOW US2 CSI 88camwow-us2-csi-88serviceAmerica/Chicago
6882CAMWOW US1 GMSS 1camwow-us1-gmss-1serviceAmerica/Chicago
6883CAMWOW US1 GMSS 2camwow-us1-gmss-2serviceAmerica/Chicago
6921CAMWOW US1 Realm 3 PvEcamwow-us1-realm-3-pveNormal (PvE)America/Chicago
6922CAMWOW US1 Realm 4 PvPcamwow-us1-realm-4-pvpPvPAmerica/Chicago
6923CAMWOW US1 Realm 5 PvEcamwow-us1-realm-5-pveNormal (PvE)America/Chicago
6924CAMWOW US1 Realm 6 PvPcamwow-us1-realm-6-pvpPvPAmerica/Chicago
6925CAMWOW US1 Realm 7 PvEcamwow-us1-realm-7-pveNormal (PvE)America/Chicago
6926CAMWOW US1 Realm 8 PvPcamwow-us1-realm-8-pvpPvPAmerica/Chicago
6927CAMWOW US1 Realm 9 RP PvPcamwow-us1-realm-9-rp-pvpRP-PvPAmerica/Chicago
6928CAMWOW US1 Realm 10 RPcamwow-us1-realm-10-rpRPAmerica/Chicago
6929CAMWOW US2 Realm 3 PvEcamwow-us2-realm-3-pveNormal (PvE)America/Chicago
6930CAMWOW US2 Realm 4 PvPcamwow-us2-realm-4-pvpPvPAmerica/Chicago
6931CAMWOW US2 Realm 5 PvEcamwow-us2-realm-5-pveNormal (PvE)America/Chicago
6932CAMWOW US2 Realm 6 PvPcamwow-us2-realm-6-pvpPvPAmerica/Chicago
6933CAMWOW US2 Realm 7 PvEcamwow-us2-realm-7-pveNormal (PvE)America/Chicago
6934CAMWOW US2 Realm 8 PvPcamwow-us2-realm-8-pvpPvPAmerica/Chicago
6935CAMWOW US2 Realm 9 RP PvPcamwow-us2-realm-9-rp-pvpRP-PvPAmerica/Chicago
6936CAMWOW US2 Realm 10 RP PvPcamwow-us2-realm-10-rp-pvpRP-PvPAmerica/Chicago
6989CAMWOW US3 GMSS 1camwow-us3-gmss-1serviceAmerica/Chicago
6991CAMWOW US3 Webcamwow-us3-webserviceAmerica/Chicago
7051CAMWOW US2 CSI 180camwow-us2-csi-180serviceAmerica/Chicago
7052CAMWOW US2 CSI 181camwow-us2-csi-181serviceAmerica/Chicago
7053CAMWOW US2 CSI 182camwow-us2-csi-182serviceAmerica/Chicago
7054CAMWOW US2 CSI 183camwow-us2-csi-183serviceAmerica/Chicago
7055CAMWOW US2 Realm 11 RPcamwow-us2-realm-11-rpRPAmerica/Chicago
7056CAMWOW AU1 Realm 3 RPcamwow-au1-realm-3-rpRPAmerica/Chicago
7057CAMWOW AU1 Realm 4 RP PvPcamwow-au1-realm-4-rp-pvpRP-PvPAmerica/Chicago
7072CAMWOW US2 CSI 184camwow-us2-csi-184serviceAmerica/Chicago
7073CAMWOW US2 CSI 185camwow-us2-csi-185serviceAmerica/Chicago
7074CAMWOW US2 CSI 186camwow-us2-csi-186serviceAmerica/Chicago
7075CAMWOW US2 CSI 187camwow-us2-csi-187serviceAmerica/Chicago
7076CAMWOW US2 CSI 188camwow-us2-csi-188serviceAmerica/Chicago
TW realms (5)
IdNameSlugRulesetTimezone
6871CAMWOW TW4 Realm 1 PvEcamwow-tw4-realm-1-pveNormal (PvE)Asia/Taipei
6872CAMWOW TW4 Realm 2 PvPcamwow-tw4-realm-2-pvpPvPAsia/Taipei
6879CAMWOW TW4 GMSS 1camwow-tw4-gmss-1serviceAsia/Taipei
6880CAMWOW TW4 GMSS 2camwow-tw4-gmss-2serviceAsia/Taipei
6892CAMWOW TW4 Partnercamwow-tw4-partnerserviceAsia/Taipei

Endpoints

We tried every route from the retail Game Data and Profile docs, about 107 in total, plus every link the open documents point to. Same result on eu and us. Here's what matters:

NamespacePathStatusNotes
dynamic-forever/data/wow/region/index200One region per API host: 93 on eu, 91 on us, 94 on tw.
dynamic-forever/data/wow/region/{regionId}200id, name, tag and patch_string (currently 1.60.1, same as the client build). Only the host's own region, region/91 on the eu host is a 404.
dynamic-forever/data/wow/realm/index200Every realm: id, name, slug.
dynamic-forever/data/wow/realm/{realmSlug or id}200Realm details: type (the ruleset), category, locale, timezone, region and a link to its connected realm. Slug and id both work.
dynamic-forever/data/wow/search/realm200Works, with localized names. Same data as the index.
dynamic-forever/data/wow/mythic-keystone/index200Only links. dungeon/index behind it is an empty 200, season/index a 404. Leftover from retail.
dynamic-forever/data/wow/search/{connected-realm, item, spell, creature, mount, journal-encounter, media}200These search documents exist but return zero results. Others (achievement, quest, pet, title, toy, guild, ...) are a 404.
dynamic-forever/data/wow/connected-realm/index404
dynamic-forever/data/wow/connected-realm/{id}404Even the link from the realm document is a 404.
dynamic-forever/data/wow/connected-realm/{id}/auctions404Also auctions/index and the classic auction house ids 2, 6 and 7.
dynamic-forever/data/wow/auctions/commodities404
dynamic-forever/data/wow/token/index404
dynamic-forever/data/wow/pvp-season/index404Same for pvp-region and the leaderboards.
dynamic-forever/data/wow/leaderboard/hall-of-fame/...404
dynamic-foreverevery Game Data document asked on the dynamic namespace404Items, classes and so on are not hiding in the dynamic namespace either.
static-foreverall Game Data documents403The plain name is refused. Use the versioned name below.
static-1.60.1_70399-forever/data/wow/playable-class, playable-race, playable-specialization2009 classes, 10 races (the eight originals plus 95 High Order Skyborne and 96 Windshaper Skyborne), 27 specs. Race documents list which classes each race can be.
static-1.60.1_70399-forever/data/wow/item/{id}, media/item/{id}, item-class, item-set200Items with names, quality, level, required level and prices, in every locale. 154 item sets. Icons come from render.worldofwarcraft.com/forever/....
static-1.60.1_70399-forever/data/wow/search/{item, spell, creature, mount, media}200Searchable. Item and media searches are capped at 1000 results, spell (833) and creature (877) are not.
static-1.60.1_70399-forever/data/wow/achievement, achievement-category200176 achievements in 29 categories with their own ids (62041 and up), for example the "Rank 3", "Rank 7" and so on achievements.
static-1.60.1_70399-forever/data/wow/mount, pet, toy, title, profession, quest, reputation-faction200141 mounts, 109 pets, 12 toys, 41 titles, 13 professions, 56 factions. Quests by id, with area and description.
static-1.60.1_70399-forever/data/wow/talent-tree, talent, creature-family, power-type, guild-crest200651 talents in 27 spec and 9 class trees, 196 guild crest emblems.
static-1.60.1_70399-forever/data/wow/journal-instance, journal-encounter, heirloom, pvp-talent, covenant200Exist but empty.
static-1.60.1_70399-forever/data/wow/spell/{id}, creature/{id}404Not every id exists. spell/133 (Fireball) and creature/448 (Hogger) are 404s, even though the searches return spells and creatures.
profile-forever/profile/user/wow200Account profile, needs a user token. Lists your characters with first name and surname. See below.
profile-forever/profile/user/wow/collections404Linked from the account profile, empty for a fresh level 1 account. Same for mounts, pets, toys, heirlooms and transmogs.
profile-forever/profile/user/wow/protected-character/{realmId}-{characterId}404Linked from the account profile, not filled yet.
profile-forever/profile/wow/character/{name}-{surname}404The link the account profile gives for each character. No realm in it. Also 404 with a realm slug. See below.
profile-forever/data/wow/guild/{realmSlug}/{guild}404Same for roster, achievements and activity: accepted, nothing to find yet.

The 404s on connected realms are worth watching. Every realm links to its connected realm, but those links don't resolve yet. Auctions hang off connected realms, so the auction house won't be there until they do.

Characters and guilds

Thanks to Makkybis for the tip that the account profile works. It needs a user token: the authorization code flow with scope wow.profile, so the player logs in with their own Battle.net account. Your app needs a registered redirect URL for that.

GET /profile/user/wow?namespace=profile-forever-eu   (user token)

"wow_accounts": [{
  "id": 1234567,
  "characters": [{
    "character": { "href": ".../profile/wow/character/davina-asaria?namespace=profile-forever-eu" },
    "protected_character": { "href": ".../profile/user/wow/protected-character/6855-716333?namespace=profile-forever-eu" },
    "name": "Davina",
    "surname": "Asaria",
    "id": 716333,
    "playable_class": { "name": "Priest", "id": 5 },
    "playable_race": { "name": "Troll", "id": 8 },
    "gender": { "type": "FEMALE", "name": "Female" },
    "faction": { "type": "HORDE", "name": "Horde" },
    "level": 1
  }]
}]

What this tells us:

Guilds are still a 404 everywhere. We also tried a dozen staff and test names on the GM, Partner and Web realms in EU and US. Nothing.

The version server

Not part of the Battle.net API, but public and useful. https://us.version.battle.net/v2/products/wowf/versions is what the launcher asks for. Forever is product wowf:

Region | BuildId | VersionsName
us     | 70707   | 1.60.1.70707
eu     | 70707   | 1.60.1.70707
cn     | 70707   | 1.60.1.70707
kr     | 70707   | 1.60.1.70707
tw     | 70707   | 1.60.1.70707

So the client is ready for all five regions, including China (downloads through NetEase's CDN) and Korea, even though the Korean API is still closed. The build config calls it WOW-70707patch1.60.1_Retail.

Other products on the same server run Forever builds (1.60.x) too:

ProductBuildProbably
wowf1.60.1.70707The live client
wow_classic_beta1.60.1.70532The beta that just ended
wow_cn_beta1.60.1.70450A Chinese Forever beta
wowdev2, wownev121.60.1.70707Internal branches, level with live
wowdev5, wowv6older 1.60.1 buildsInternal branches

A higher build on wowdev2 or wownev12 than on wowf is the earliest sign of a patch. At the time of writing nothing newer than the launch build is staged.

The product config (from the CDN, linked in the versions file) has a few facts the launcher uses:

The official website

The armory and realm status pages on worldofwarcraft.blizzard.com use a game version key in the URL, for example /en-gb/worldsoul/eu/armory/character/... for retail. The keys the site knows right now are modern, classic1x, classicann and classic. Forever isn't one of them: /en-gb/forever/eu/server-status is the same generic page you get for a made up key, and the armory under /forever/ is a 404. Expect a new key there once Forever gets its armory.

The status page loads its data from /graphql, but that endpoint only takes the site's own safelisted queries. Not usable from outside.

Not tested