If you just return the model from your controller, it will be converted to an array, and in the case of JSON requests, come back as JSON. I guess in theory you could write a middleware that would return any requested model this way. Many of the entry level Laravel tutorials show you how to return a model directly from a route, I guess you’ve seen that. So something like that, but for all models.
I think in reality, you would want to have more control over how each model is represented as JSON. That’s where Resources are useful. See https://laravel.com/docs/5.8/eloquent-resources
Also, controllers are a good place for authorization and validation (perhaps with the help of Policies and Requests), which may vary from model to model. And if your API will not only retrieve data, but also create, update, delete, and so on, I think you would need a controller either way. And then the “retrieve” part is usually very simple compared to create or update, for instance.