Both can co-exist in the same project. There is a routes/web.php file for Session-based Request/Response cycle, and a routes/api.php file for non-Session API Request/Responses. The latter creates URLs with a api/ prefix (by default).
Beyond that, there are a number of approaches you can take for structuring your application code depending on preference and/or size. The very simplest approach would reuse the same Controller actions for both web and API requests, branching inside the Controller action depending on the Request source, e.g:
if ($request->expectsJson()) {
return response()->json([/* payload */]);
}
return view('name-of-view', [' /* view data */]);
This will probably get tedious after a bit... If you wish to structure your application so that logic is available to both web and API clients, then you can consider Actions (like Jetstream does) - you will have separate web and API Controllers which will delegate to common Actions.