kotlin-inject and dagger API are quite the same. I would say kotlin-inject perhaps easier because it is lighter with less concepts. It creates and places the injector bindings in the right place at compilation time, so at runtime is a matter of just calling these bindings, they will give you the dependency.
If your App demands high performance, then this is probably the option.
Koin in contrast uses a different approach, the factories are created at compilation time but the library locates them in the graph at runtime, and it has a cost. However, the flexibility its API offers, in my opinion is worth this little performance hit. At runtime you can load/unload modules, create/close scopes and such. To me that's gold. Dagger kinda does all that with subcomponents but I like Koin API much more.