[Breaking change] Deprecation of id property in the link create endpoint


Breaking change

We are deprecating and removing the "id" parameter in the link creation endpoint. API Clients need to use the "idString" parameter instead. We have already removed the id parameter for new users and those who did not use API before. Starting from Sep 1st, we will remove this parameter for everyone. Using numeric id will work in all existing endpoints for an indefinite time.

Generally, we try not to change our API even if we don't like our previous decisions, especially the link creation endpoint, but this time is different. When we created Short.io 7 years ago, we did not expect our users to generate 2 billion links and large companies worldwide will use our services. Since that time, the link identifier was sequential. We generate link id with id 1, id 2, id 2 000 000 000. To do so, we need a counter - single point of failure, which keeps track of numbers and is the only blocker in our system's scalability.

To scale our system, we need to get rid of this sequence and generate a random identifier instead. But to do this, we also need to make our identifier a string instead of a number. Good random identifiers require 128 bits of data; it is possible to get mediocre identifiers for 64 bits, but JSON number has a limitation of 53 bits, and we did not find a practical way to generate a scalable identifier for a 53-bit integer.