Enka.Network - API

July 30, 2025 · View on GitHub

简体中文翻译可能并不完全准确。如有必要请参考原文 api.md

Enka.Network - API

目录

入门

您可以直接使用他人的封装,或直接使用API。根据响应编写自己的数据逻辑非常简单,最大的挑战是分辨解包的游戏数据并将其正确地应用在返回的数据上。

封装章节查看您所选的语言。

在发送请求之前

使用本API的几条规则:

  1. 请不要尝试枚举 UID 或大量查询来填充数据库,在成千上万的 UID 中使用本 API 做到这一点根本是无稽之谈。我可能会在之后提供批量数据。

  2. 请为您的请求自定义 User-Agent 头,以便我进行追踪,并给您提供帮助。

  3. UID 端点有动态频率限制 - 如果您请求太快的话,会被降低响应时间或直接返回 429 状态码。这种情况您需要降低请求频率,或联系我看看是否可能为您提高限制(大多数情况下没有必要,仅仅是未经优化的代码导致的)。

  4. 在此说明,所有 UID 查询请求都会返回一个 ttl 字段 - 此字段表示“下次查询此 UID 的角色展柜前的秒数”,在这之前,端点将返回缓存数据,但是这种情况下依旧会消耗您的请求限制。请尝试在请求后使用 ttl 的超时缓存数据(推荐使用 Redis),或避免在 ttl 耗尽前再次查询此 UID。

如果您处理这些数据时遇到困难,可以到 Discord 服务器 寻求帮助。

API 列表

UID 端点

获取角色展柜以及玩家信息

https://enka.network/api/uid/618285856/

返回包括 playerInfoavatarInfoListplayerInfo 是关于此游戏账号的基本数据。如果没有 avatarInfoList,则表示此账号关闭了角色展柜“显示角色详情”或没有展示任何角色。

仅获取玩家信息

https://enka.network/api/uid/618285856/?info

在请求中加入 ?info 以单独查询 playerInfo。前文的请求方式总会获取 avatarInfoList,如果仅需要 playerInfo,使用本端点会比获取全部数据快上许多。

此外,如果满足下述条件,这两种请求都会包含一个 owner 对象:

  1. 此用户在本站有账号
  2. 此用户在用户资料中添加了TA的UID
  3. 此用户验证了该UID
  4. 此用户将其可见性设置为“公开”

下面有更多关于用户账号的信息。

HTTP 响应状态码

请确保您的应用对此有适当的处理。

400 = UID 格式错误
404 = 玩家不存在(MHY 服务器说的)
424 = 游戏维护中 / 游戏更新后一切都崩溃了
429 = 请求频率限制(被我的或者MHY的服务器)
500 = 服务器错误
503 = 我搞砸了

用户资料端点

网站上可以创建账户(用户资料)并添加游戏账号,用户们之后会被要求将验证码写入游戏签名以验证账号,这样我们可以确保此账号属于他们。

用户可以以自定义名称“快照”配装,或者说“已保存的配装”。

https://enka.network/api/profile/Algoinde/

获取用户信息。

https://enka.network/api/profile/Algoinde/hoyos/

获取“hoyo”的列表 - 原神账号与其元数据。仅返回已验证和公开的账号(用户可以隐藏账号,未验证的账号默认隐藏),返回的每个键都是一个 hoyo 的唯一标识,在后面的请求中您需要它们来获取其角色/配装信息。

https://enka.network/api/profile/Algoinde/hoyos/4Wjv2e/

返回单个 hoyo 的元数据。

https://enka.network/api/profile/Algoinde/hoyos/4Wjv2e/builds/

返回给定 hoyo 保存的配装。根是一个值为数组的对象,键是该角色的 avatarId,数组中的对象是此角色的不同配装(未经排序,不过其中有 order 可供排序显示)。

如果某个配装包含 live: true 字段,则表示其不是“已保存”的配装,而只是该用户上次点击“刷新”时从角色展柜中抓取的数据,每次刷新时,旧的 live 配装会被新的代替。此数据并不总是保持最新,仅由用户决定什么时候刷新。

UID 端点 章节提到过,发送 UID 请求时会得到 owner 对象,您可以用此对象中的字段构造URL:

https://enka.network/api/profile/{owner.username}/hoyos/{owner.hash}/builds/

数据结构

名称描述
playerInfo玩家资料信息
avatarInfoList正在展示的每个角色的详细信息列表

playerInfo

对于通过 ID 获取角色的基本信息,请前往 store/characters.json
有关任何其他信息,请查看 Characters Data

名称描述
nickname名称
signature签名
worldLevel世界等级
namecardId资料名片 ID
finishAchievementNum已解锁成就数
towerFloorIndex本期深境螺旋层数
towerLevelIndex本期深境螺旋间数
showAvatarInfoList角色 ID 与等级的列表
showNameCardIdList正在展示的名片 ID 列表
profilePicture.avatarId玩家头像的角色 ID

showAvatarInfoList

名称描述
avatarId角色 ID
level角色等级
costumeId角色衣装 ID。请查看 store/characters.json"Costumes"

avatarInfoList

对于通过 ID 获取角色的基本信息,请前往 store/characters.json
有关任何其他信息,请查看 Characters Data

名称描述
avatarID角色 ID
talentIdList命之座 ID 列表
如果未解锁任何命之座则此数据不存在
propMap角色属性列表
fightPropMap -> {id: value}角色战斗属性 Map
请查看 ID 定义
skillDepotId角色天赋 ID
Skills Data -> "id"
inherentProudSkillList固定天赋列表 ID
Skills Data -> "inherentProudSkillOpens"
skillLevelMap -> {skill_id: level}天赋等级 Map
Skills Data -> "inherentProudSkillOpens"
equipList装备列表:武器、圣遗物
fetterInfo.expLevel角色好感等级

propMap

名称描述
type属性类型,请查看 ID 定义
ival忽略它
val属性值

equipList

名称描述
itemId装备 ID
Artifacts Data -> "id"
Weapons Data -> "id"
weapon [Weapon Only]武器基本信息
reliquary [Artifact Only]圣遗物基本信息
flat装备详细信息

weapon

有关武器的任何其他信息,请查看 Weapons Data

名称描述
level武器等级
promoteLevel武器突破等级
affixMap武器精炼等级 [0-4]

reliquary

有关圣遗物的任何其他信息,请查看 Artifacts Data

名称描述
level圣遗物等级 [1-21]
mainPropId圣遗物主属性 ID
MainProps Data
appendPropIdList圣遗物副属性 ID 列表
AppendProp Data

flat

名称描述
nameTextHashMap装备名的哈希值
请查看 本地化
setNameTextHashMap [Artifact Only]圣遗物套装的名称的哈希值
请查看 本地化
rankLevel装备稀有度
reliquaryMainstat [Artifact Only]圣遗物主属性
reliquarySubstats [Artifact Only]圣遗物副属性列表
weaponStats [Weapon Only]武器属性列表:基础攻击力、副属性
itemType装备类别:武器、圣遗物
icon装备图标名称
图标名称使用方法
equipType [Artifact Only]圣遗物类型

reliquaryMainstat, reliquarySubstats, weaponStats

名称描述
mainPropId / appendPropID装备属性名称。请查看 名称定义
propValue属性值

定义

Prop

类型描述
1001经验值
1002突破
4001等级

FightProp

类型描述
1基础生命值
2生命值
3生命值百分比
4基础攻击力
5攻击力
6攻击力百分比
7基础防御力
8防御力
9百分比防御力
10基础速度
11速度百分比
20暴击率
22暴击伤害
23元素充能效率
26治疗加成
27受治疗加成
28元素精通
29物理抗性
30物理伤害加成
40火元素伤害加成
41雷元素伤害加成
42水元素伤害加成
43草元素伤害加成
44风元素伤害加成
45岩元素伤害加成
46冰元素伤害加成
50火元素抗性
51雷元素抗性
52水元素抗性
53草元素抗性
54风元素抗性
55岩元素抗性
56冰元素抗性
70火元素能量需求(元素爆发)
71雷元素能量需求(元素爆发)
72水元素能量需求(元素爆发)
73草元素能量需求(元素爆发)
74风元素能量需求(元素爆发)
75冰元素能量需求(元素爆发)
76岩元素能量需求(元素爆发)
80冷却缩减
81护盾强效
1000当前火元素能量
1001当前雷元素能量
1002当前水元素能量
1003当前草元素能量
1004当前风元素能量
1005当前冰元素能量
1006当前岩元素能量
1010当前生命值
2000生命值上限
2001攻击力
2002防御力
2003速度
3025元素反应暴击率
3026元素反应暴击伤害
3027元素反应(超载)暴击率
3028元素反应(超载)暴击伤害
3029元素反应(扩散)暴击率
3030元素反应(扩散)暴击伤害
3031元素反应(感电)暴击率
3032元素反应(感电)暴击伤害
3033元素反应(超导)暴击率
3034元素反应(超导)暴击伤害
3035元素反应(燃烧)暴击率
3036元素反应(燃烧)暴击伤害
3037元素反应(碎冰)暴击率
3038元素反应(碎冰)暴击伤害
3039元素反应(绽放)暴击率
3040元素反应(绽放)暴击伤害
3041元素反应(烈绽放)暴击率
3042元素反应(烈绽放)暴击伤害
3043元素反应(超绽放)暴击率
3044元素反应(超绽放)暴击伤害
3045基础元素反应暴击率
3046基础元素反应暴击伤害

ItemType

名称描述
ITEM_WEAPON武器
ITEM_RELIQUARY圣遗物

EquipType

名称描述
EQUIP_BRACER生之花
EQUIP_NECKLACE死之羽
EQUIP_SHOES时之沙
EQUIP_RING空之杯
EQUIP_DRESS理之冠

AppendProp

名称描述
FIGHT_PROP_BASE_ATTACK [Weapon]基础攻击力
FIGHT_PROP_HP生命值
FIGHT_PROP_ATTACK攻击力
FIGHT_PROP_DEFENSE防御力
FIGHT_PROP_HP_PERCENT生命值百分比
FIGHT_PROP_ATTACK_PERCENT攻击力百分比
FIGHT_PROP_DEFENSE_PERCENT防御力百分比
FIGHT_PROP_CRITICAL暴击率
FIGHT_PROP_CRITICAL_HURT暴击伤害
FIGHT_PROP_CHARGE_EFFICIENCY元素充能效率
FIGHT_PROP_HEAL_ADD治疗加成
FIGHT_PROP_ELEMENT_MASTERY元素精通
FIGHT_PROP_PHYSICAL_ADD_HURT物理伤害加成
FIGHT_PROP_FIRE_ADD_HURT火元素伤害加成
FIGHT_PROP_ELEC_ADD_HURT雷元素伤害加成
FIGHT_PROP_WATER_ADD_HURT水元素伤害加成
FIGHT_PROP_WIND_ADD_HURT风元素伤害加成
FIGHT_PROP_ICE_ADD_HURT冰元素伤害加成
FIGHT_PROP_ROCK_ADD_HURT岩元素伤害加成
FIGHT_PROP_GRASS_ADD_HURT草元素伤害加成

图标和图片

您可以通过 Enka 获取角色、武器和圣遗物的图标,通过 URL https://enka.network/ui/[icon_name].png
通常图标名称以 "UI_""Skill_"(对于角色天赋)为前缀。
例如 https://enka.network/ui/UI_AvatarIcon_Side_Ambor.png

武器和圣遗物

前往 flat 并寻找 icon

角色,天赋和命座

前往 store/characters.json 并通过角色 ID 寻找与 "UI_XXXXXX" 或 "Skill_XXXXXX" 相关的数据。

本地化

您可能会注意到 store/characters.json 中的 "NameTextMapHash"flat 中的 "nameTextHashMap""setNameTextHashMap",它们可以用作从 store/loc.json 获取角色、武器和圣遗物的基本的本地化数据的键。

您还可以通过使用属性名称作为键来获取 AppendProp 中的本地化数据 —— 例如 "FIGHT_PROP_HP""FIGHT_PROP_HEAL_ADD" 等。

有关名称、描述等的任何其他信息,请查看 TextMap Data,仅包括游戏支持的语言。

封装

TS/JS - https://www.npmjs.com/package/enkanetwork.js - Jelosus1

TS/JS - https://github.com/yuko1101/enka-network-api - yuko1101

Python - https://github.com/mrwan200/enkanetwork.py - mrwan200

Python - https://github.com/seriaati/enka-py - seriaati

Java - https://github.com/kazuryyx/EnkaNetworkAPI - kazury

C# - https://github.com/aliafuji/EnkaDotnet - aliafuji

C# - https://github.com/Carried520/EnkaSharp - Carried520

Go - https://github.com/kirinyoku/enkanetwork-go - kirinyoku