There has to be an ABI in order for loadable kernel modules to exist. That's the part that's infamously unstable.
API stability is not guaranteed, though it's stable enough that the likes of Nvidia can write installers for their proprietary drivers that recompile a bit of interface glue between kernel and blob.