The Linux kernel developers have decided that they do not want to expend the considerable amount of resources required to maintain a stable API and, more importantly, a stable ABI for drivers. The Linux kernel does guarantee both stable APIs and ABIs for userspace code.
The proper way to develop a driver for Linux is to bring the code up to a level of quality that is acceptable for the Linux kernel, then merge it into the Linux kernel source code. That way, every time the API changes, the person who makes the API change is responsible for updating all the drivers as well, and every time the kernel gets compiled, the driver gets compiled with the correct ABI.
If a hardware vendor does not want to merge the driver into the kernel, then it is their responsibility to make the driver available to their customers.
In 2003, Dell developed Dynamic Kernel Module Support, a framework that allows to dynamically detect and compile drivers and other Linux kernel modules. However, again, it is the responsibility of the DKMS developers to make sure DKMS stays compatible with Linux distributions, and if a hardware vendor wants to use DKMS, it is their responsibility to make their drivers compatible with it.
It is the hardware vendors responsibility to either make drivers available, or to make documentation available that would allow someone else to develop a driver. This is simply because nobody else has the necessary information to do it.
This is really no different from other operating systems. I have devices which don't work under Windows because the hardware vendor refuses to make Windows drivers available for it and does not provide any documentation, and I have devices which don't work under macOS for the same reasons. Linux is not special here.
What is special about Linux is that, if a hardware vendor releases their driver to be included into the Linux kernel, and provides the necessary documentation, then the Linux community will maintain the driver for them, for free.
[Note: most of what I wrote here is not specific to Linux, it also applies to many other open source operating systems such as the various BSDs (NetBSD, OpenBSD, FreeBSD, Dragonfly BSD, etc.), Haiku, or Redox.]
The Linux kernel developers have documented their reasoning in The Linux Kernel Driver Interface – all of your questions answered and then some. Quoting from the Executive Summary [bold italic emphasis mine]:
You think you want a stable kernel interface, but you really do not, and you don’t even know it. What you want is a stable running driver, and you get that only if your driver is in the main kernel tree. You also get lots of other good benefits if your driver is in the main kernel tree, all of which has made Linux into such a strong, stable, and mature operating system which is the reason you are using it in the first place.
To answer your questions directly:
Is it possible to make a driver interface or driver API that is the same for multiple Linux distributions?
Yes, it is possible, but it is not necessary.
Has this been done? A common driver API for multiple Linux OS?
No, it has not been done, because the people who would benefit from it (proprietary hardware vendors) are not willing to pay for it, and the people responsible for developing the Linux kernel do not want it.
Some vendors have done it for parts of the Linux kernel. For example, Nvidia developed an abstraction that would allow their proprietary drivers to work with multiple versions of Linux and multiple distributions. But they did not share this development with others, so it only worked for Nvidia drivers.