It's impossible to design a perfect API in a vacuum.
A useful API is a negotiation, a mutual process of discovery with your ecosystem.
This property means that it is fundamentally uncertain.
If you wait until an API is "perfect" to ship, you will ship nothing, or you will ship a thing that if you get even a single detail wrong it will not work.
You have to ship an API that is good and useful and then clean it up and evolve it in response with the ecosystem.