ESI v4 Character Route Removed - Please Update to V5

To all of our third party developers,

Please note that version 4 of the character/{character_id} route on ESI was removed last Monday (25 October). Any applications which were written using v4 of the character route need to be updated to v5.

The ESI changelog can be found at esi-issues/ at master · esi/esi-issues · GitHub where you can find the official documentation of changes made to ESI.

Related to this, we are currently seeing an increase in traffic to eve.character.skill endpoints since v4 character route was removed, possibly indicating applications which have started behaving poorly since this change.

If you maintain any applications which use the v4 character endpoint please ensure that they are updated to v5 as soon as possible, and help us make sure that your alliance IT teams and fellow third party developers are aware of this update.

Please also take this chance to inspect your usage of the various eve.character.skill endpoints both related and unrelated to this change.

If you have any questions about this then please point them to this thread and we will do our best to assist you.

1 Like

Heya I’m sorry,I think I can explain your weird spike in character skill hits.

I used it in our OAUTH 2.0 migration scripts the last 3 days to verify if everything was still in order for each character (before and after) migration. Considering the amount of tokens we have (Pandemic Horde’s IT) I wouldn’t be surprised if that is actually a noticeable spike on your monitoring.


Haha, no worries! We’re just happy to hear people are noticing and updating.

Hey @Kalbuir_Skirate: Can you confirm that you are still fetching this data? And if so, can you let us know when you are done?

Internally we got alerts on

  • SkillHandler.GetAllSkills_External
  • SkillHandler.GetSkillPoints_External
  • SkillHandler.GetFreeSkillPoints_External
  • SkillHandler.GetAttributes_External
  • SkillHandler.GetImplants_External
  • SkillHandler.GetRespecInfo_External
  • charMgr.GetClones_External

and it looks like the corresponding external calls are

  • eve.character.skill.GetLearnedSkillsRequest
  • eve.character.skill.GetCharacterAttributesRequest
  • eve.character.implant.GetActiveImplantsByCharacterRequest
  • eve.character.clone.GetClonesByCharacterRequest

and it looks like this:

Starts on Monday 25 Oct at approximately 14 o’clock UTC.

Ah nope in that case we are not the culprit, only call I would have expected more requests on the
“eve.character.skill.GetLearnedSkillsRequest” endpoint. Which I assume maps to /characters/${character_id}/skills/ which stopped the 27th on our end. Looking at your graph it would not make a dent in your traffic as I also just realized the process did not scale and just did 1 continuous stream of API calls. So the TPS would be quite low as a result.

The script in question for migration of tokens was started on Monday morning and only ran during EU daytime as I wanted to monitor its progress. It stopped the evening of the 27th after it was completed. I’ve also verified there is no new behavior that does a new abnormal amount of API calls.


  • eve.character.skill.GetCharacterAttributesRequest
  • eve.character.implant.GetActiveImplantsByCharacterRequest
  • eve.character.clone.GetClonesByCharacterRequest

Are not API calls we do in any ASYNC type process currently. On a final note, on all our API calls we have the User-Agent set as “Horde Square”.

Sorry :slight_smile:

1 Like

Are you ever going to fix Developer Registration, or even acknowledge the problem directly?

1 Like

Your developer registration page has been broken for a month and many people have submitted a ticket over it. Hard to implement an ESI change without access.

Do I understand correctly that if you use latest, then you automatically use v5? And if v5 will be updated to, let’s suppose, v6 in future, you will automatically use v6, right?

Yes, you can do this - but when updates are made your program may simply stop working until you update it and then you’d have to go fix it anyway, so that’s not really the way we recommend doing it.

Actually, there’s almost no difference. When you use v4, you need to update your app to v5 or it will not work just because v4 route is removed. When you use latest, you need to update (or just to review) your app to make sure it understands new format.

But there is a reason why using latest is a better option than using versioned endpoint. When you use a versioned endpoint, and the support of this version is dropped, your app is started to be limited because it performs non-200 API calls. And, as I understand, in some cases you need to contact Customer Support Team to remove this limit. When you use latest, you most likely performs “HTTP code 200” requests (of course, if some required method parameters were not changed), and you only have internal application errors, not errors on API server (and then limits).

So, using the latest endpoint looks like a bit safer option. You can fix issues, and your app will start working right after it. And when you use versioned endpoints, in addition to code fixes, you most likely need to wait until limiting period is ended or is removed by Customer Support.

In case you want to use versioned endpoints, you can check for the esi warning header to get advanced notices when a endpoint is moved to legacy, before it’s eventually removed and even when an update is available in dev:

If you’re worried about getting banned from ESI for errors, you should check and respect error limit headers:


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.