The part of the software calling/using the API. So, if you are writing a C++ application targeting the API, you should be able to implement high level abstractions at least as efficient than an API provider could. Possibly more efficient, as you can tune your abstractions to your very non-generic needs. An API provider though has to implement the more common use cases which might bring inefficiencies. However this turns around 180 degrees, when talking about a language like Javascript, which despite all JIT enhancements does not produce as efficient low level code. There you want to put as many of the computations as possible into your API so the resulting application runs faster.