API, Application Programming Interface, is meant to provide clients an easy and simple access to use a code package. (Although other stuff could have API too, I only talk about software here)
When designing an API, we should notice some of its additional benefits.
It helps you think
clearly and explicitly what kind of work your code does. You can verify and be confident of the correctness (or should we say robustness?) of your code by testing the API. You can easily measure the performance of your code by profiling the API. A good designed API should hide as much as implementation details as possible. It is an abstraction of the entire code package. It tells about the essence of the entire code package. It helps you identify the boundary of your code package. By constructing an easy and simple API, we can avoid convoluted code logic and we have a clear purpose.
Test driven development is to design an API first in some sense: you design the "API" for the code unit, write the test for this "API" first, and then implement it.
So, when you design a code package, construct an API first. Should we call this API-driven development?