If building a separate frontend (Next.js, Nuxt, mobile), do not use the Admin API. Instead, create your own routes using Eloquent to maintain control over auth, caching, and response shapes.
Example implementation in routes/api.php:
// routes/api.php — example, you own this
Route::get('/blog/posts', function () {
return Post::published()
->select(['id', 'slug', 'title', 'summary', 'featured_image', 'published_at', 'user_id', 'topic_id'])
->with(['topic:id,name,slug', 'user:id,name'])
->latest()
->paginate(10);
});
Route::get('/blog/posts/{slug}', function (string $slug) {
$post = Post::published()
->with(['tags:name,slug', 'topic:id,name,slug', 'user:id,name'])
->firstWhere('slug', $slug) ?? abort(404);
return [
'post' => $post,
'seo' => PostSeo::resolve($post, url("/blog/{$slug}")),
];
});