Enka.Network - API

July 30, 2025 · View on GitHub

Содержание

Начало работы

Вы можете использовать API напрямую, либо использовать библиотеки-врапперы, написанные другими. API довольно несложное, основная работа заключается в поиске нужных вещей в датамайне из игры на основе данных, которые возвращает API - в этом основной функционал такой библиотеки.

В разделе библиотеки-врапперы вы можете найти библиотеку на подходящем языке программирования.

То, чего следует придерживаться при запросах

Несколько правил использования API:

  1. Пожалуйста, не пытайтесь перебирать UID или выполнять массовые запросы (чтобы разом заполнить свою базу данных, например). В игре сотни миллионов UID, через мой API это просто не представляется вомзожным. Возможно, позднее я сделаю выгрузку, которую можно будет скачать целиком.

  2. Поставьте User-Agent хедер на ваши запросы, чтобы я мог их видеть - для того чтобы я если что смог помочь или подсказать что-то.

  3. На запрос данных по UID есть динамические рейтлимиты — если вы делаете слишком много запросов, время отклика будет расти. В конце концов вы уткнетесь в HTTP-код 429. В этом случае нужно принять меры, чтобы уменьшить их количество. Можете связаться со мной, чтобы узнать, возможно ли увеличить рейтлимиты для вашего конкретного случая, но в большинстве случаев это не нужно и просто является результатом неоптимизированного кода.

  4. Запросы на UID возвращают поле ttl - это поле означает "сколько осталось секунд до очередного запроса в игру". Пока ttl не истечет, эндпоинт будет возвращать кешированные данные - но в рейтлимит такой запрос всё равно будет считаться. Рекоменндую кэшировать данные и использовать ttl для того, чтобы UID нельзя было запросить снова (пока оно не истечет). Для этого рекомендую использовать Redis.

Если есть вопросы по API или распарсиванию данных, можете задать вопрос на Discord-сервере.

API

UID-эндпоинты

Получение данных с витрины с полной информацией об игроке

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

Ответ будет содержать playerInfo и avatarInfoList. playerInfo содержит основные данные об игровом аккаунте. Если avatarInfoList отсутствует, это значит, что витрина этой учетной записи либо скрыта игроком, либо там нет персонажей.

Получение только информации об игроке

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

Подставив ?info к запросу, Вы получите только playerInfo. Основной эндпоинт всегда дополнительно делает запрос для получения avatarInfoList; если Вам нужен только playerInfo, используйте ?info - он работает быстрее и на нём меньше рейтлимиты.

Кроме того, оба ответа будут содержать объект «владелец» (owner), если:

  1. У пользователя есть аккаунт на сайте;
  2. Пользователь добавил свой UID в профиль;
  3. Пользователь верицифировал, что UID принадлежит ему;
  4. Пользователь установил его видимость на «публичный».

Подробнее об учетных записях пользователей ниже.

Коды ответов HTTP

Убедитесь, что Вы правильно обрабатываете их в своем приложении.

400 = Неверный формат UID
404 = Игрок не существует (так сказали сервера михоёв, не стоит на это 100% полагаться)
424 = Обслуживание серверов / все сломалось после обновления
429 = Ограничена скорость (либо моим сервером, либо сервером михоёв)
500 = Общая ошибка сервера (что-то не так в данных?)
503 = Всё умерло насмерть

Эндпоинты профиля

На сайте можно создать аккаунт (профиль) и привязать к нему несколько игровых аккаунтов. Затем, с помощью кода подтверждения, засунутого в подпись, пользователи могут подтвердить, что это их аккаунт — таким образом сайт можем гарантировать, что игровой аккаунт принадлежит данному человеку.

Пользователи могут сохранять снапшоты сборок под произвольными именами, я их называю «сохраненные сборки».

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

Получает информацию о пользователе

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

Получает список «hoyos» — учетные записи в Геншине и метаданные о них. Эндпоинт вернет только те учетные записи, которые являются и verified, и public (пользователи могут скрывать учетные записи; неподтвержденные учетные записи скрыты по умолчанию). Каждый ключ в ответе является уникальным идентификатором для 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. Используя поля в этом объекте, можно сконструировать API-ссылку на профиль:

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

Структура данных

НазваниеОписание
playerInfoИнформация профиля
avatarInfoListСписок подробной информации по каждому персонажу из витрины

playerInfo

Базовые данные персонажей по ID можно получить из store/characters.json.
Для дополнительной информации можно обратиться к данным персонажей.

НазваниеОписание
nicknameНикнейм игрока
signatureПодпись ппрофиля
worldLevelУровень мира игрока
namecardIdID именной карточки профиля
finishAchievementNumКоличество полученных достижений
towerFloorIndexЭтаж бездны
towerLevelIndexКомната бездны
showAvatarInfoListСписок ID персонажей и уровней
showNameCardIdListСписок ID именных карточек
profilePicture.avatarIdID персонажа на аватарке

showAvatarInfoList

НазваниеОписание
avatarIdID персонажа
levelУровень персонажа
costumeIdID скина персонажа. Смотрите "costumes" в store/characters.json

avatarInfoList

Базовые данные персонажей по ID можно получить из store/characters.json.
Для дополнительной информации можно обратиться к данным персонажей.

НазваниеОписание
avatarIDID персонажа
talentIdListСписок ID созвездий
Нет данных, если 0 созвездий
propMapСписок свойств информации о персонаже
fightPropMap -> {id: value}Map боевых свойств персонажа.
Смотрите определения для ID
skillDepotIdID набора навыков персонажа
Данные умений -> "id"
inherentProudSkillListСписок разблокированных ID навыков
Данные умений -> "inherentProudSkillOpens"
skillLevelMap -> {skill_id: level}Map уровней навыков
Данные умений -> "inherentProudSkillOpens"
equipListСписок снаряжения: Оружие, Артефакты
fetterInfo.expLevelУровень дружбы персонажа

propMap

НазваниеОписание
typeID статы, см. определения для ID статов
ivalНа это можно забить
valЗначение этой статы

equipList

НазваниеОписание
itemIdID оружия
Данные артефактов -> "id"
Данные оружия -> "id"
weapon [Только оружие]Базовая информация об оружии
reliquary [Только артефакт]Базовая информация об артефакте
flatДополнительная распарсенная информация

weapon

Для получения дополнительной информации об оружии можно обратиться к данным оружий

НазваниеОписание
levelУровень оружия
promoteLevelУровень возвышения оружия
affixMapУровень пробуждения оружия [0-4]

reliquary

Для получения дополнительной информации об артефактах можно обратиться к данным артефактов

НазваниеОписание
levelУровень артефакта [1-21]
mainPropIdID основного стата артефакта
Данные основных статов
appendPropIdListСписок ID подстатов артефакта
Данные подстатов

flat

НазваниеОписание
nameTextHashMapХэш имени предмета
См. локализация
setNameTextHashMap [Только артефакт]Хэш для названия сета артефактов
См. локализация
rankLevelУровень редкости снаряжения
reliquaryMainstat [Только артефакт]Основной стат артефакта
reliquarySubstats [Только артефакт]Список подстатов артефакта
weaponStats [Только оружие]Список статов оружия: Базовая слиа атаки, подстат
itemTypeТип снаряжения: оружие или артефакт
iconНазвание иконки снаряжения
Использование названий иконок
equipType [Только артефакт]Тип артефакта

reliquaryMainstat, reliquarySubstats, weaponStats

НазваниеОписание
mainPropId / appendPropIDID статы снаряжения. Смотрите определения имён
propValueЗначение статы

Определения

Prop

ТипОписание
1001Опыт
1002Возвышение
4001Уровень

FightProp

ТипОписание
1Базовое HP
2HP
3HP%
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Текущее HP
2000Максимальное HP
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 [Оружие]Базовая сила атаки
FIGHT_PROP_HPЦелочисленное HP
FIGHT_PROP_ATTACKЦелочисленная сила атаки
FIGHT_PROP_DEFENSEЦелочисленная защита
FIGHT_PROP_HP_PERCENTHP%
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Бонус Дендро урона

Иконки и изображения

Иконки персонажей, оружия и артефактов можно взять с моего CDN, по URL https://enka.network/ui/[icon_name].png.
Обычно название иконки начинается с "UI_" или "Skill_" для талантов персонажей.
Например, https://enka.network/ui/UI_AvatarIcon_Side_Ambor.png.

Оружия и артефакты

Внутри объектов flat есть icon.

Персонажи, таланты и созвездия

В store/characters.json - строки, которые «UI_XXXXXX» или «Skill_XXXXXX» - находятся по ID персонажа.

Локализация

"NameTextMapHash" в store/characters.json, "nameTextHashMap" и "setNameTextHashMap" в flat используется в качестве ключа для получения локализованных названий предметов из 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

Rust - https://github.com/eratou/enkanetwork-rs - eratou

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